正则表达式 – 删除跨多个换行符的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注释等所需的所有函数。