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

本文关键字:删除 注释 HTML 正则表达式 条件 何修复 | 更新日期: 2023-09-27 18:36:48

我有以下代码:

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

。它工作正常,除了它还剥离了条件注释:

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

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

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

您可以使用负面前瞻和负面后视:

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

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

使用Derek Slager非常有用且快速的正则表达式测试器进行测试:

源文本:

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

模式:

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

结果:

找到 1 匹配项:

1. <!--Comment-->