正则表达式排除嵌套的 HTML 标记


regex exclude nested html tag

我有一段文字:

<strong>blalblalba</strong>blasldasdsadasdasd<strong> 3.5m Euros<br>
<span class="style6">SOLD</span></strong>

我想删除<strong> contains $|euros|Euros</strong>

到目前为止,我有:

preg_replace('#<strong>.*?(^<strong>).*?('$|euros|Euros|EUROS).*?</strong>#is', '', $result);

但它不起作用...我也在尝试负锁头(?!),但仍然不起作用......

有什么帮助吗?谢谢

假设

你预计在欧元之前有两个刺,我认为这可能是你想要的:preg_replace('#^<strong>.*?<strong>.*?('$[euros|Euros|EUROS]).*?</strong>#is', '', $result);

你可以试试这个,必须使用'Dot-All'修饰符或替换[''S''s] -

 # <strong>(?:(?!'1)(?:'$|euros|Euros|EUROS)()|(?!<strong>).)+</strong>'1
 <strong>
 (?:
      (?! '1 )
      (?: '$ | euros | Euros | EUROS )
      ( )
   |  
      (?! <strong> )
      . 
 )+
 </strong>
 '1