首页 新闻 赞助 找找看

正则表达式处理html标签嵌套

0
悬赏园豆:100 [已解决问题] 解决于 2017-03-21 09:21

html标签属性里面嵌套html标签,正则表达式如何处理这种?

阿萨德飞<span exp="阿萨德<span>a</span>" style="color: red;">

三个

</span>
<img src=""/>
<sss> 撒旦法</sss>

ps:

附上我写的正则:<((?!p|/p)S*?)[^>]*>.*?|<(?!p|/p).*? />

下图是正则工具匹配的结果,不尽人意。

问题补充:

首先,感谢逐影的回答,你给的正则表达式:<(span)[^>]*.*>[\n\r\s\t]*[^<]*</\1>

不能满足这个需求。首先,不要固定span标签。其他的标签如div,ul什么的,如果属性中用到类似的这种嵌套,就不匹配。第二,这个正则不能匹配<img /> <input /> 这种(其实这个不是重点,前面单个闭合的匹配才是重点)。

  最后,还是感谢逐影的回答,你这种给我提供了另外的思路。

尘世书童的主页 尘世书童 | 初学一级 | 园豆:73
提问于:2017-03-16 19:04
< >
分享
最佳答案
0

<(\w+)[^<]*?(/>|>[\s\S]*?</\1>)

收获园豆:100
Yu | 专家六级 |园豆:12980 | 2017-03-17 16:34

你好,这个结果还是不是特别满意,第一个span标签未能匹配到。不过这个答案也是很接近答案了。今天没时间,晚上我会再研究下大神给的答案的。thx

尘世书童 | 园豆:73 (初学一级) | 2017-03-17 16:48

@尘世书童: 

<(\w+)([^<]*?(<\1>[\s\S]*?</\1>)?[^<]*?)?((?<!\1)?>.*?</\1>|/>)

这个呢,里面嵌套的只能在组里面取

Yu | 园豆:12980 (专家六级) | 2017-03-17 17:17

@Yu: ╮(╯▽╰)╭我用的是这两个在线检测工具匹配,没结果。

http://tool.oschina.net/regex/

http://tool.chinaz.com/regex/

尘世书童 | 园豆:73 (初学一级) | 2017-03-17 17:30

@尘世书童: 

Yu | 园豆:12980 (专家六级) | 2017-03-18 15:41

@Yu: 你用的这个工具是哪个工具?可否发个链接。我再确认下,结贴,给分。

下图是我自己下的工具匹配结果,没达到你这个效果o(╯□╰)o

尘世书童 | 园豆:73 (初学一级) | 2017-03-20 10:55

@尘世书童: http://www.ultrapico.com/Expresso.htm

Yu | 园豆:12980 (专家六级) | 2017-03-20 13:16

@Yu: 是我自己脑子梗塞吗?第一个分组是这个效果。

尘世书童 | 园豆:73 (初学一级) | 2017-03-20 16:28

@尘世书童: RegexOptions.Singleline

 

 

<(\w+)([^<]*?(<\1>[\s\S]*?</\1>)?[^<]*?)?((?<!\1)?>[\s\S]*?</\1>|/>)

Yu | 园豆:12980 (专家六级) | 2017-03-21 08:52

@Yu: 厉害呢!

尘世书童 | 园豆:73 (初学一级) | 2017-03-21 09:21
其他回答(2)
0

<span exp="阿萨德<span>a</span>" style="color: red;">

这种中间的尖括号不转义?这算哪门子html?

Daniel Cai | 园豆:10424 (专家六级) | 2017-03-17 10:11

实际场景:

页面元素贴图:

这个也是自己在维护老系统的过程中碰到的问题,自己是用另一种方法(插入特殊标签,然后indexof这个标签位置,再截取字符串处理的)。只不过想尝试着用正则处理这个问题,让大侠见笑了O(∩_∩)O~

支持(0) 反对(0) 尘世书童 | 园豆:73 (初学一级) | 2017-03-17 10:39
0

你可能需要这个 https://github.com/Ivony/Jumony 博客园大神写的哦

为森 | 园豆:579 (小虾三级) | 2017-03-17 16:27

谢谢你的分享

支持(0) 反对(0) 尘世书童 | 园豆:73 (初学一级) | 2017-11-07 15:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册