我有以下代码:
source = Regex.Replace(source, "<!--.*?-->", string.Empty, RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Compiled);
...它工作正常,除了它还去掉了条件注释:
<!--[if IE]>???<![endif]-->
有人可以告诉我如何更新正则表达式,使其不删除条件注释吗?
您可以使用负前瞻和负前瞻:
<!--(?!\[).*?(?!<\])-->
应该只匹配<!--
后面不带 [ 和-->
前面不带 ] 的,当然还有 .*? 匹配中间的文本。
使用Derek Slager非常有用且快速的 RegEx 测试器进行了测试:
源文本:
<!--[if IE]>???<![endif]-->
<!--Comment-->
图案:
<!--(?!\[).*?(?!<\])-->
结果:
找到 1 个匹配项:
1. <!--Comment-->