3

我有以下代码:

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

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

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

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

4

1 回答 1

3

您可以使用负前瞻和负前瞻

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

应该只匹配<!--后面不带 [ 和-->前面不带 ] 的,当然还有 .*? 匹配中间的文本。

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

源文本:

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

图案:

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

结果:

找到 1 个匹配项:

1. <!--Comment-->
于 2012-06-08T23:25:10.510 回答