如何修复删除条件注释删除HTML注释的正则表达式?

时间:2012-06-08 23:08:55

标签: c# regex

我有以下代码:

source = Regex.Replace(source, "<!--.*?-->", string.Empty, RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Compiled);

...它工作正常,除了它还删除条件注释:

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

有人可以告诉我如何更新正则表达式,以便它不会删除条件注释吗?

1 个答案:

答案 0 :(得分:3)

您可以使用negative lookaheads and negative look behinds

<!--(?!\[).*?(?!<\])-->

只应匹配<!--后面没有[以及之前没有-->的任何内容,当然还有。*?匹配中间的文本。

使用Derek Slager's非常有用且快速的RegEx测试器进行测试:

来源文字:

<!--[if IE]>???<![endif]--> 
<!--Comment--> 

模式:

<!--(?!\[).*?(?!<\])-->

结果:

找到1个匹配项:

1. <!--Comment-->