Php 正则表达式只匹配注释和内部标记之间的所有引用(html)

Php 正则表达式只匹配注释和内部标记之间的所有引用(html),php,regex,Php,Regex,Regex(preg\u match\u all())应该匹配所有出现在内部注释之间的标记 /<!--COMMENT_begin-->.*?(<p>.*?\bLorem\b.*?<\/p>).*?<!--COMMENT_end-->/sig /.*(*?\bLorem\b.*)。/sig 但此正则表达式仅与以下标记的第一次出现相匹配 <!--COMMENT_begin--> <p>Lorem</p> <

Regex
(preg\u match\u all())
应该匹配所有出现在
内部
注释之间的标记

/<!--COMMENT_begin-->.*?(<p>.*?\bLorem\b.*?<\/p>).*?<!--COMMENT_end-->/sig
/.*(*?\bLorem\b.*)。/sig
但此正则表达式仅与以下标记的第一次出现相匹配

<!--COMMENT_begin-->
<p>Lorem</p>
<p>Lorem <span>Lorem</span></p>
<div>Lorem</div>
<p>Ipsum</p>
<p>Lorem</p>
<!--COMMENT_end-->

洛勒姆

洛雷姆·洛雷姆

洛勒姆 Ipsum

洛勒姆

使用

(?si)(?:\G(?!\A)|(?:\G(?!\A)|)(?:(!)*?)(?:(!)*?\K\bLorem\b


在不区分大小写模式下,它将匹配
之间的
Lorem
内部的所有
Lorem

可能
(?si)(?:\G(?!\A)|)(?:(?!)*?\K[^难以置信!Thx!下一步是将所有的“Loren”替换为“loremxx”“关于此模式。使用一个preg_replace()是否可能?”声明??像在?你是最好的!拯救了我的一周:)检查
preg\u replace\u callback
。这会更容易。Thx!但是
\bLorem\b
应该只在
标签之间找到。在一个
标签内,可能出现的
Lorem
也应该匹配。可能吗?哇,太酷了。使用
(*SKIP)(*FAIL)
将“Lorem”从
a
标记或其他类似的
]*>.*(*SKIP)(*FAIL)
[class | id]=“*?”(*SKIP)(*FAIL)
中排除,或者这应该作为否定实现吗?您更新的示例也匹配
Lorem
,但不应该匹配;(@JKB现在与
Lorem
不匹配。你可以随意添加SKIP-FAIL。太好了!SKIP-FAIL必须放在前面,好吗?
(?si)(?:\G(?!\A)|(?:\G(?!\A)|<!--COMMENT_begin-->)(?:(?!<!--COMMENT_(?:begin|end)-->).)*?<p>)(?:(?!<\/?p>).)*?\K\bLorem\b