正则表达式找到HTML评论但不是只评论

时间:2012-08-20 06:56:57

标签: php regex pattern-matching

我想仅使用正则表达式匹配有效的HTML注释。 我在stackoverflow上看到了很多问题,但没有人回答这个问题。 允许匹配的模式

<!-- some comments 1 -->
<!-- 1.91 -->
<!--
//-->
<!-- -->

但不是这些仅限IE的评论

<!--[if IE]> <![endif]-->
<!--[if !IE]><!-->  <!--<![endif]-->
<!--[if IE 6]> <![endif]-->

我认为可以通过'['如果在<!--之后将其作为第一个字符返回false来帮助它来完成。 你可以用任何方式提供自己的解决方案。 对于php只能使用preg_replace

2 个答案:

答案 0 :(得分:1)

我真的不建议您使用正则表达式执行此操作,但如果您坚持,这是一个基本的正则表达式:http://regex101.com/r/wI2kF7

使用锚标记:http://regex101.com/r/tC9xH4

祝你好运。

答案 1 :(得分:1)

为什么要使用正则表达式?使用DOMXPath query,如下所示

'//comment()[not(starts-with(., "[if") or . = "<![endif]")]'

有关工作示例,请参阅http://codepad.viper-7.com/Yzs5zq