Html 匹配内部的文本块<;p></p>;某些标签重复2次以上
我正在努力找到解决办法 我想匹配Html 匹配内部的文本块<;p></p>;某些标签重复2次以上,html,regex,Html,Regex,我正在努力找到解决办法 我想匹配标记中包含2个以上的任何文本块,以及;编辑:罗斯·拉塞尔和 我正试图找出一个正则表达式代码,它将匹配标记中的整个文本块,但唯一的决定因素是标记的数量,我的意思是我不知道文本是什么样的 以下是我尝试过的正则表达式代码: <p.*?>(\s+|\n+|)((.*?|)<a.*?>(.*?|)</a>(.*?|)){2,}(\s+|\n+|)</p> (\s+\n+)(.*?)(.*?)(.*?)(.*?)(.*?){
标记中包含2个以上的任何文本块,以及;编辑:罗斯·拉塞尔和
我正试图找出一个正则表达式代码,它将匹配
标记中的整个文本块,但唯一的决定因素是
标记的数量,我的意思是我不知道文本是什么样的
以下是我尝试过的正则表达式代码:
<p.*?>(\s+|\n+|)((.*?|)<a.*?>(.*?|)</a>(.*?|)){2,}(\s+|\n+|)</p>
(\s+\n+)(.*?)(.*?)(.*?)(.*?)(.*?){2,}(\s+\n+|)
它不起作用。
有什么想法吗?最好通过将html解析为DOM而不是使用regexp来解决整个问题 如果必须,您可以尝试类似的方法(有些边缘情况不适用于此解决方案):
]*>(.*?]*>.*?]*>.*?{2,}]*>
这将匹配开头的,然后包含和的文本至少两次,然后匹配结尾的尝试以下操作:
/^<p.*(?=(\<\/a>).*(\<\/a>)).*<\/p>$/mg
/^看看“.”为什么仅仅(.*)
是不够的?是否需要排除
s或
s?
,然后在(.*)
中也不需要()
<代码>
不好-使用[^>]
而不是
。“它不工作”是什么意思?会发生什么?你用什么语言或工具测试这个正则表达式?“你试过使用XML解析器了吗?”当它没有找到2个
标记时,它也会直接经过
,进入下一个
,然后从那里继续。如果
标记包含另一个
标记,它也将不起作用。你是对的。一般来说,不可能用regexp正确解析层次结构。还有其他边缘情况,如。它会使正则表达式复杂,以确保中间没有闭包。这就是为什么最好通过将html解析为dom而不是使用regexp来解决整个问题的原因
<p[^>]*>(.*?<a[^>]*>.*?<\/a[^>]*>.*?){2,}<\/p[^>]*>
/^<p.*(?=(\<\/a>).*(\<\/a>)).*<\/p>$/mg