下面的片段对我不起作用.
fragment = Regex.Replace(fragment, "<!--.*?-->", String.Empty , RegexOptions.Multiline );
Run Code Online (Sandbox Code Playgroud)
Tho*_*rin 26
将其更改为RegExOptions.Singleline相反,它将正常工作.当不处于单线模式时,点与任何字符匹配,除了换行符.
需要注意的是Singleline和Multiline不是相互排斥的.他们做两件事.引用MSDN:
多线模式.更改^和$的含义,使它们分别在任何行的开头和结尾匹配,而不仅仅是整个字符串的开头和结尾.
单线模式.更改点(.)的含义,使其匹配每个字符(而不是除\n之外的每个字符).
其他人已经建议使用HTML Agility Pack.我觉得你应该解释为什么你的正则表达式不起作用:)
请不要使用正则表达式来处理标记语言 - 您需要使用为此类作业构建的更好的工具.
请改用Html Agiliy Pack.我甚至发现这篇文章中有一个读者(名为Simon Mourier)使用Html Agility Pack从文档中删除注释的函数注释:
Simon Mourier说:
这是删除评论的示例代码:
Run Code Online (Sandbox Code Playgroud)static void Main(string[] args) { HtmlDocument doc = new HtmlDocument(); doc.Load("filewithcomments.htm"); doc.Save(Console.Out); // show before RemoveComments(doc.DocumentNode); doc.Save(Console.Out); // show after } static void RemoveComments(HtmlNode node) { if (!node.HasChildNodes) { return; } for (int i=0; i<node.ChildNodes.Count; i++) { if (node.ChildNodes[i].NodeType == HtmlNodeType.Comment) { node.ChildNodes.RemoveAt(i); --i; } } foreach (HtmlNode subNode in node.ChildNodes) { RemoveComments(subNode); } }
| 归档时间: |
|
| 查看次数: |
12456 次 |
| 最近记录: |