我有以下代码:
source = Regex.Replace(source, "<!--.*?-->", string.Empty, RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Compiled);
...它工作正常,除了它还删除条件注释:
<!--[if IE]>???<![endif]-->
有人可以告诉我如何更新正则表达式,以便它不会删除条件注释吗?
答案 0 :(得分:3)
您可以使用negative lookaheads and negative look behinds:
<!--(?!\[).*?(?!<\])-->
只应匹配<!--
后面没有[以及之前没有-->
的任何内容,当然还有。*?匹配中间的文本。
使用Derek Slager's非常有用且快速的RegEx测试器进行测试:
来源文字:
<!--[if IE]>???<![endif]-->
<!--Comment-->
模式:
<!--(?!\[).*?(?!<\])-->
结果:
找到1个匹配项:
1. <!--Comment-->