JavaJs下使用正则表达式匹配嵌套Html标签.docx
《JavaJs下使用正则表达式匹配嵌套Html标签.docx》由会员分享,可在线阅读,更多相关《JavaJs下使用正则表达式匹配嵌套Html标签.docx(35页珍藏版)》请在冰点文库上搜索。
![JavaJs下使用正则表达式匹配嵌套Html标签.docx](https://file1.bingdoc.com/fileroot1/2023-5/7/4c925e7b-eb79-44c0-bafc-833160157ac6/4c925e7b-eb79-44c0-bafc-833160157ac61.gif)
JavaJs下使用正则表达式匹配嵌套Html标签
Java/Js下使用正则表达式匹配嵌套Html标签
有朋友留言说Java直接使用的话会报错。
我后来查了一下,发现Java正则引擎支持的特性相对比较少。
在1.6版本中不能使用命名组(貌似1.7的时候开始支持了),否则会报以下错误,更别说平衡组了。
因此感觉要实现无限级的嵌套匹配不大现实。
复制代码代码如下:
java.util.regex.PatternSyntaxException:
Look-behindgroupdoesnothaveanobviousmaximumlengthnearindexXX在网上搜了好久也没找到完美的解决方案。
不过,我们可以实现有限级Html嵌套标签匹配。
思路相对于无限级来说就简单了好多,不需要那么多高级的特性。
示例:
复制代码代码如下:
<divid=‘container’><BR><divstyle=‘background-color:
gray;’id=‘footer’><BR><aid=‘gotop’href=‘#’onclick=‘MGJS.goTop();returnfalse;’>Top</a><BR><aid=‘powered’href=‘http:
//wordpress.org/’>WordPress</a><BR><divid=‘copyright’><BR>Copyright©2009简单生活——KevinYang的博客<BR></div><BR><divid=‘themeinfo’><BR>Themeby<ahref=‘Valid<ahref=‘http:
//validator.w3.org/check?
uri=referer’>XHTML1.1</a><BR>and<ahref=‘http:
//jigsaw.w3.org/css-validator/’>CSS3</a>.<BR></div><BR></div><BR></div>在上面这个示例中,我们打算匹配id为footer的这个嵌套div,而且假设我们预先知道footer这个div里面最多只会嵌套一级div。
更多级的情况我们一会儿再讲。
footer的开始和结束标签匹配很简单:
复制代码代码如下:
<div[oter’[r的闭合标签会匹配失误。
OK了,匹配最多嵌套一级div的正则表达式如下:
复制代码代码如下:
<div[;div[<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*id=‘footer’[<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*>(<div[<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*>(<div[<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>到这里你可能就知道,如果要匹配最多嵌套三级div的话,正则应该怎么写了:
复制代码代码如下:
<div[<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*id=‘footer’[<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*>(<div[<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*>(<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*id=‘footer’[;div[<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*id=‘footer’[<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*>(<div[<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*>(<div[<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>到这里你可能就知道,如果要匹配最多嵌套三级div的话,正则应该怎么写了:
复制代码代码如下:
<div[<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*id=‘footer’[<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*>(<div[<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*>(<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*>(<div[;div[<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*id=‘footer’[<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*>(<div[<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*>(<div[<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>到这里你可能就知道,如果要匹配最多嵌套三级div的话,正则应该怎么写了:
复制代码代码如下:
<div[<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*id=‘footer’[<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*>(<div[<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*>(<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*>.*?
</div>|.)*?
</div>那么如果footer标签里头最多会嵌套两级div的话怎么办呢?
其实也不难,我们只需要把上面的“内容A”部分中的点号稍作替换即可。
修改如下:
复制代码代码如下:
<div[<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*id=‘footer’[<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*>(<div[<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*>(<div[<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>到这里你可能就知道,如果要匹配最多嵌套三级div的话,正则应该怎么写了:
复制代码代码如下:
<div[<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*id=‘footer’[<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*>(<div[<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*>(<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*>......(这里的省略号是一会要填写的)</div>夹在开始和结束标签之间的内容无非有两种情况:
内容A:
div标签,并且此div内无嵌套div内容B:
任意其他内容然后就是这两种内容的不断重复而已。
正则表示如下:
复制代码代码如下:
(<div[r的闭合标签会匹配失误。
OK了,匹配最多嵌套一级div的正则表达式如下:
复制代码代码如下:
<div[;div[<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;]*>.*?
</div>|.)*?
</div>|.)*?
</div>|.)*?
</div>所以实际上,只要你的html结构不是特别复杂的话,也就是说嵌套不会很深的话,那么你完全可以使用这种方式来匹配嵌套html标签。
这个正则在Java和Javascript中都可以使用,因为它没有用到任何高级特性。
gt;]*id=‘footer’[<div[[标签:
内容]gt;]*>(<div[[标签:
内容]gt;