0

我想去除 Span 标签的 html 字符串。

我有一个 html 字符串:

<a href=\"http://www.dr.dk/roskilde\"><span>Roskilde</span><span>Festival</span></a>

我需要将其简化为:罗斯基勒音乐节。

Atm,我有一个正则表达式字符串,它应该能够找到所有跨度标签,但它失败了

 System.Collections.Specialized.StringCollection sc = new System.Collections.Specialized.StringCollection();

    sc.Add(@"/<\s*\/?\s*span\s*.*?>/g");


    foreach (string s in sc)
    {
        k = System.Text.RegularExpressions.Regex.Replace(pContent, s, "", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
    }
    k = System.Text.RegularExpressions.Regex.Replace(pContent, @"&nbsp;", @"&#160;");                                                              

有任何想法吗?

PS 我不想使用 Html Agility Pack

4

1 回答 1

3

正则表达式不是处理 HTML 的最佳方式。使用理解嵌套的 HTML 解析器,因为 Regexp 不理解 HTML 嵌套。

考虑查看反字符集,即<whatever[^>]*>

我猜你从某个地方复制了这个,但你的正则表达式可能不是正确的 C# 语法(额外//g)。重读 C# 教程中的正则表达式!试试这个字符串:

Example /<span>/g does this tag get removed?

您可能打算使用的是:

sc.Add(@"</?span( [^>]*|/)?>");
于 2012-07-08T14:41:51.937 回答