`

java正则匹配html片段,并取得标签中的内容

阅读更多

        最近java群好友发来一个html代码,要帮忙匹配查找html代码里面特定的内容:

        代码如下:

<dl>

<dd>
    <span class="gray6">年<span class="padl27"></span>代:</span>2013年</dd>

<dd>
    <span class="gray6">朝<span class="padl27"></span>向:</span>东北</dd>

<dd>
    <span class="gray6">楼<span class="padl27"></span>层:</span>第10层(共33层)</dd>

<dd>
    <span class="gray6 ">结<span class="padl27"></span>构:</span>平层</dd>

<dd>
    <span class="gray6">装<span class="padl27"></span>修:</span>毛坯</dd>

<dd>
    <span class="gray6">住宅类别:</span>普通住宅</dd>

<dd>
    <span class="gray6">建筑类别:</span>板楼</dd>

<dd>
    <span class="gray6 ">产权性质:</span>个人产权</dd>

<dd>

</dl>

 

     

 

     需求为找到 span中内容为:住宅类别的中后面的内容,即获取“普通住宅”文本,通过分析发现如果直接匹配到具体的

<dd>  <span class="gray6">住宅类别:</span>普通住宅</dd>

 

 发现会有点麻烦, 因为以<dd>开头 并以</dd>结束的模式如果写的不好会匹配整个大段的html(去掉开头和结尾的dl)。所以匹配模式改为先匹配每一个dd中的内容, 

 则模式为:

String regex2 = "<dd.*?>([\\s\\S]*?)</dd>";

 

 然后将匹配的dd字符串在去匹配span查找是否存在“住宅类别”文字。如果匹配说明是我们需要查找的

 匹配span的模式为:

String regex3 = "<span.*?>住宅类别";

 如果找到匹配的dd则将dd标签和span标签全部替换掉:思路如下:

dd=dd.replaceAll("<dd>", "");//替换开头的dd
dd=dd.replaceAll("</dd>", "");//替换结束的订单
dd=dd.replaceAll("<span.*?</span>", "");//替换span标签

  

 完整代码如下:

 由于对正则不是很熟悉,纯粹的摸索。如果有更好的实现方法,往各位看官不吝赐教。

 

public static void main(String[] args) {
		
		String oriStr = "<dl>"+
				"<dd>"+
				"    <span class=\"gray6\">年<span class=\"padl27\"></span>代:</span>2013年</dd>"+
				"<dd>"+
				"    <span class=\"gray6\">朝<span class=\"padl27\"></span>向:</span>东北</dd>"+
				"<dd>"+
				"    <span class=\"gray6\">楼<span class=\"padl27\"></span>层:</span>第10层(共33层)</dd>"+
				"<dd>"+
				"    <span class=\"gray6 \">结<span class=\"padl27\"></span>构:</span>平层</dd>"+
				"<dd>"+
				"    <span class=\"gray6\">装<span class=\"padl27\"></span>修:</span>毛坯</dd>"+
				"<dd>"+
				"    <span class=\"gray6\">住宅类别:</span>普通住宅</dd>"+
				"<dd>"+
				"    <span class=\"gray6\">建筑类别:</span>板楼</dd>"+
				"<dd>"+
				"    <span class=\"gray6 \">产权性质:</span>个人产权</dd>"+
				"<dd>"+
				"</dl>";

		String regex2 = "<dd.*?>([\\s\\S]*?)</dd>";
		String regex3 = "<span.*?>住宅类别";
		Pattern pattern2 = Pattern.compile (regex2);
		Pattern pattern3 = Pattern.compile (regex3);
		Matcher match2 = pattern2.matcher (oriStr);
		Matcher match3 = null;
		while (match2.find ()){//取的每个dd标签
			String dd = match2.group ();
			System.out.println(dd);
			match3 = pattern3.matcher(dd);
			
			if(match3.find()){//找到dd中含有住宅列别的span 将没用的替换掉
				dd=dd.replaceAll("<dd>", "");
				dd=dd.replaceAll("</dd>", "");
				dd=dd.replaceAll("<span.*?</span>", "");
				System.out.println("\n\n\n\n\n找到啦......"+dd+"\n\n\n\n");
			}
		}
		
	}

 

1
2
分享到:
评论

相关推荐

    正则匹配URL.txt

    本文将围绕“正则匹配URL”这一主题展开,详细解析如何使用正则表达式来识别和匹配URL,特别是针对JSP环境下URL的获取与处理。 ### 正则表达式的应用背景 在Web开发中,URL(统一资源定位符)是网站资源的地址标识...

    java代码-正则去除HTML代码中的IMG标签

    在Java编程中,处理HTML内容时,我们可能会遇到需要移除特定标签,比如IMG标签的情况。这通常是出于数据清理、文本分析或者某些特定需求。在这个案例中,我们要使用正则表达式来实现这个功能。正则表达式是匹配和...

    java正则表达式,十分有用的正则表达式

    ### Java正则表达式的应用与理解 #### 一、引言 在软件开发过程中,处理字符串是一项非常常见的任务。为了高效地完成字符串的匹配、查找、替换等操作,正则表达式成为了一种不可或缺的工具。Java作为一种广泛使用...

    JAVA正则表达式 从入门到进阶

    Java正则表达式是编程语言Java中用于处理文本的强大工具,它源于早期的神经网络理论研究,由数学家Stephen Kleene提出并应用在Ken Thompson的计算搜索算法中,尤其是在Unix的qed编辑器中得到实际应用。自那时起,...

    Java正则之贪婪匹配、惰性匹配

    Java正则表达式是编程语言中用于处理字符串的强大工具,其中两种重要的匹配模式是贪婪匹配和惰性匹配。这两种模式涉及到正则表达式中的量词,它们决定了匹配字符的次数和方式。 贪婪量词(Greedily Quantifiers)在...

    java正则测试工具

    总的来说,Java正则测试工具是开发过程中的得力助手,它简化了正则表达式的调试过程,帮助开发者更好地理解和应用正则表达式,从而提高代码质量和开发速度。无论你是Java初学者还是经验丰富的开发者,都应该熟悉并...

    Java基于正则表达式实现查找匹配的文本功能【经典实例】

    在Java中实现基于正则表达式查找匹配文本的功能是...总的来说,Java正则表达式是处理文本匹配问题的重要工具,通过上述实例和知识点的解析,我们可以更好地理解如何在实际开发中运用正则表达式进行文本查找和匹配操作。

    java代码-在线 java正则表达式测试工具,java正则测试,在线java正则匹配

    Java正则表达式是Java编程语言中的一个强大工具,它用于模式匹配和字符串处理。在本文中,我们将深入探讨Java正则表达式的基本概念、如何使用它们以及如何创建一个在线的Java正则表达式测试工具。 一、Java正则...

    Java正则表达式匹配电话格式

    本文主要介绍如何使用Java正则表达式来匹配电话号码格式。在探讨正则表达式匹配电话号码之前,我们需要了解正则表达式的基本组成,包括普通字符和特殊字符(元字符)。普通字符代表它们自己,而元字符则有不同的含义...

    Java常用的一些正则表达式

    Java正则表达式是编程语言Java中用于处理字符串的强大工具,它允许我们通过模式匹配来验证、提取或替换文本。在Java中,正则表达式是通过`java.util.regex`包中的类和接口实现的,如`Pattern`、`Matcher`和`...

    JAVA正则表达式 Pattern和Matcher

    在Java编程语言中,正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和分割字符串。`java.util.regex`包提供了`Pattern`和`Matcher`两个核心类,它们协同工作,使得开发者能够利用正则表达式进行复杂的...

    java正则表达式

    Java正则表达式是Java语言中处理字符串的强大工具,它允许程序员通过模式匹配来验证、查找、替换或者操作文本。正则表达式是由特殊字符和普通字符组成的字符串,这些字符串代表了一个模式,用于匹配一系列符合该模式...

    最好用的正则表达式匹配工具

    4. **代码生成**:RegexBuddy支持多种编程语言,能自动生成与正则表达式匹配的源代码片段,可以直接插入到你的项目中,大大提高了开发效率。 5. **学习资源**:对于初学者,RegexBuddy还提供了正则表达式教程和参考...

    Java过滤特殊字符的正则表达式.doc

    #### 五、Java正则表达式基本语法 除了上述示例中的正则表达式之外,还需要了解一些常用的正则表达式语法: - **转义字符**: - `\\`: 反斜杠 - `\t`: 间隔 (tab) - `\n`: 换行 - `\r`: 回车 - **预定义字符类*...

    java正则表达式获取url的host示例

    以下将详细介绍如何使用Java正则表达式来实现这一功能。 首先,我们来看提供的代码片段: ```java public static String getHost(String url) { if(url==null||url.trim().equals("")) { return ""; } String ...

    正则表达式 Regular Expression 正则表达式资料大全压缩包

    正则表达式(Regular Expression,简称regex)是用于在文本中匹配特定模式的强大工具,它在编程、数据处理和文本分析等领域中广泛应用。这个“正则表达式资料大全压缩包”很可能包含了各种教程、示例、参考手册以及...

    2023年最完整区号/国家/手机号正则数据库

    开发者在使用时需要解析这个文件,并将数据加载到程序中,然后根据需求编写对应的正则匹配逻辑。 总的来说,这个数据库是一个宝贵的资源,可以帮助开发者在处理电话号码相关的功能时节省大量的研究和测试时间,提高...

Global site tag (gtag.js) - Google Analytics