从XML中删除注释

Cha*_*lts 3 .net regex comments strip

我遇到了删除表单注释的需要:

<!--  Foo

      Bar  -->
Run Code Online (Sandbox Code Playgroud)

我想使用一个正则表达式来匹配开头和结尾'分隔符'之间的任何东西(包括换行符).

这项任务有什么好的正则表达式?

yog*_*man 6

没有.它不能通过正则表达式所基于的上下文无关语法来描述.

假设这个线程以XML格式导出.您的示例(<! - FOO Bar - >)如果包含在CDATA中,将会丢失,而它不完全是评论.


Dia*_*tis 5

简单的方法:

Regex xmlCommentsRegex = new Regex("<!--.*?-->", RegexOptions.Singleline | RegexOptions.Compiled);
Run Code Online (Sandbox Code Playgroud)

还有一个更好的方法:

Regex xmlCommentsRegex = new Regex("<!--(?:[^-]|-(?!->))*-->", RegexOptions.Singleline | RegexOptions.Compiled);
Run Code Online (Sandbox Code Playgroud)