从文本中删除任何超链接和文本

时间:2013-06-24 18:16:57

标签: asp.net

我想知道如何删除任何超链接< a>来自某些文本中的标签 - 整个批次包括文本/图像在结束之前链接的任何内容< / a>标签。

E.g。

<a href="http://stackoverflow.com">Click here</a>        
<a href="http://stackoverflow.com"><img src="http://stackoverflow.com" alt = "blah"></a>

即。删除整个。

任何想法如何做到这一点?

由于

3 个答案:

答案 0 :(得分:1)

强制性“不要使用正则表达式解析html”警告:RegEx match open tags except XHTML self-contained tags

我建议转换为XHTML并使用xPath或查看HTMLAgilityPack来执行此操作。我过去曾使用这两种方法来解析/修改html,它们比使用正则表达式更加灵活/健壮。

这是一个让你开始使用HtmlAgilityPack的例子:

 HtmlDocument doc = new HtmlDocument();
 doc.Load("file.htm");
 foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href]")
 {
    // Do stuff!
 }
 doc.Save("file.htm");

答案 1 :(得分:0)

根据我的理解,这应该有用

string linksRemoved = Regex.Replace(withLinks, @"</?(a|A).*>", "");

答案 2 :(得分:0)

您可以尝试使用正则表达式来替换标记。我的正则表达不是最好的,但这应该让你接近。

System.Text.RegularExpressions.Regex.Replace(
     input, 
     @"<a[^>]*?>.*?</a>", 
     string.Empty);