消极的前瞻,但在它之前有一些东西

时间:2014-08-03 20:42:36

标签: regex

我正在使用正则表达式解析一些HTML我有以下正则表达式匹配除img和a之外的所有标签。

 \<(?!img|a)[^\>]+\>

这很好但我也想让它与结束标签相匹配,我尝试了以下但是它不起作用:

 \</?(?!img|a)[^\>]+\>

最好的方法是什么?

(此外,在有大量评论表示不使用正则表达式解析HTML之前,我只想说这个HTML是由工具生成的,并且非常统一。)

编辑:

 <p>So in this</p>
 <p>HTML <strong>with nested tags</strong></p>
 <p>It should remove <i>everything</i> except <a href="#">This link</a>
 and this <img src="#" alt="image" /> but it also needs to kep the textual content</p>

2 个答案:

答案 0 :(得分:0)

好的,这是一个非常浪费的解决方案:

   <(?!img|a|\/img|\/a)[^>]+>

如果有人能找到更好的人,那就太好了。

答案 1 :(得分:0)

我认为最简单的解决方案如下:

<\/?(?!img|a)[^>]+>

它只是匹配:

  • a <
  • a /(使用\转义)如果有(量词?),
  • 声称既没有img也没有a
  • >[^>]+)和
  • 之外的任何序列
  • a >

看到它正常工作here on regex101