正则表达式 – 删除跨多个换行符的HTML注释

我正在使用这个脚本:

http://www.codeproject.com/Articles/11902/Convert-HTML-to-Plain-Text

将一些outlook HTML转换为纯文本。

它几乎可以工作,它留下的唯一的东西是除了标签(被删除)之外的html注释标签中的CSS

这是原文:

        

tesst

 

JOE BLOGS

这是生成的文本:(注意HTML注释尚未删除)

  tesst   JOE BLOGS 

我尝试过使用StripHTML()函数和其他替换 – 但这些也不起作用。

 result = System.Text.RegularExpressions.Regex.Replace(result, "()", String.Empty, System.Text.RegularExpressions.RegexOptions.IgnoreCase) result = System.Text.RegularExpressions.Regex.Replace(result, "", String.Empty, System.Text.RegularExpressions.RegexOptions.IgnoreCase) 

请帮忙 – 这是一份2分钟的工作,自午餐时间以来我一直坚持下去

干杯

编辑1 :也试过以下 – 仍然没有快乐

 result = System.Text.RegularExpressions.Regex.Replace(result, "", String.Empty, System.Text.RegularExpressions.RegexOptions.IgnoreCase) result = System.Text.RegularExpressions.Regex.Replace(result, "", String.Empty, System.Text.RegularExpressions.RegexOptions.IgnoreCase) 

编辑2:我注意到这个问题得到了很多观点,任何阅读此内容的人都应该三思而后行采用regExp方法,而我建议使用Lynx(OpenSource基于文本的浏览器)将HTML转换为纯文本,我问了一个类似的问题在这里 ,我根据应该从.net应用程序中开始使用lynx.exe的答案提供编辑中的示例代码。 这是我们最终使用的方法,从那时起就没有任何问题。

你的第二个正则表达式有三个原因:

  • 你需要使用. 匹配任何角色。
  • *是贪婪的。 你想*? 懒洋洋地匹配。
  • 你需要RegexOptions.Singleline

试试这个:

 result = Regex.Replace(result, "", "", RegexOptions.Singleline); 

我强烈建议您不要使用正则表达式来解析HTML。 如果您使用HTML Agility Pack,您将为自己节省一个痛苦的世界。

关于为此目的使用HTML Agility Pack,在源代码下的htmlagilitypack-xxxx \ Release \ 1_4_0 \ Html2Txt文件夹中有一个名为Html2Txt的项目。

HtmlConvert.cs包含将HTML转换为Text并处理HTML注释等所需的所有函数。