0

如何通过 C# 中的正则表达式从任何特殊标签中清除 HTML?

这是需要删除的示例 HTML<font size="-2">

R&amp;usg=AFQjCNFYiDC6u3xOGn4JpO-GF83PjdSbtw&amp;url=http://online.wsj.com/article/SB10000872396390444426404577647060576633348.html"><img src="//nt2.ggpht.com/news/tbn/bm6jvTMtF-PpnM/6.jpg" alt="" border="1" width="80" height="80" /><br /><font size="-2">Wall Street Journal</font></a></font>
            </td>

我知道我们必须以某种方式使用正则表达式,但我不知道如何使用它。

我曾尝试调整此方法,但它会清除所有标签。

public string Strip(string text) 
{ 
   return Regex.Replace(text, @”&lt;(.|\n)*?>”, string.Empty); 
}

事实上,我正在寻找一些方法来做这样的事情

public string Strip(string text, HTMLTags.Font)
{

} 

HTMLTags.Font一些 HTML 标记的枚举在哪里

enum HTMLTags
{
    Font,
    Div,
    Td
    ...
}

谢谢你的任何线索!!!

4

3 回答 3

3

使用HtmlAgilityPack解析 html

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);

foreach (var font in doc.DocumentNode.Descendants("font").ToArray())
{
    font.Remove();
}
于 2012-09-12T18:37:30.833 回答
2

最好的应该是Html Agility Pack

它不是正则表达式,但解析器对“真实世界”格式错误的 HTML 非常宽容。

于 2012-09-12T18:37:34.390 回答
1

虽然HTMLAgilityPack很可能是最好的选择(因为它允许您针对 HTML 的表示形式的 DOM 执行 LINQ 查询和/或 XPath 查询)。开始可能如下:

public static class HTMLTags
{
    public string Font { get { return "<font>" } }
    public string Div { get { return "<div>" } }
    public string Td { get { return "<td>" } }
}

然后,在您的客户端代码中:

public string Strip(string text, HTMLTags.Font)
{
    /* string parse/replace occurances of HTMLTags.Font  */
} 
于 2012-09-12T18:38:32.470 回答