RegEx从String .NET中删除内部Intranet链接

时间:2011-02-07 17:15:57

标签: .net regex parsing

我正在寻找一种方法来删除字符串中对内部Intranet站点的所有引用,同时保留标签。

例如:

Dim str As String = Nothing
str &= "<a href=""http://intranet/somepage.asp"">Internal Page</a>"
str &= "<a href=""http://www.external.com"">External Page</a>"

引用http://intranet的任何内容都将被视为内部内容,需要使用正则表达式进行解析和删除。

感谢您的帮助。

由于

2 个答案:

答案 0 :(得分:2)

虽然它不是正则表达式解决方案,但它同样简单。鉴于上面的两个例子,您可以执行以下操作:

Private Function IntranetCheck(ByVal link As String) As String
    If link.ToLower().Contains("http://intranet/") Then
        Return link.Split(">")(1).Split("<")(0)
    Else
        Return link
    End If
End Function

用法:

Dim str As String = Nothing
str &= IntranetCheck("<a href=""http://intranet/somepage.asp"">Internal Page</a>") 
str &= IntranetCheck("<a href=""http://www.external.com"">External Page</a>")

这将检查传入的字符串是否包含Intranet地址,如果是,它将拆分字符串以仅返回元素的内部文本。

答案 1 :(得分:0)

我强烈建议您使用Html Agility Pack进行此类处理。使用此工具,您可以执行以下操作:

HtmlDocument doc;
doc.Load(fileName);
foreach(HtmlNode anchor in doc.DocumentNode.Descendants("a").Where(n => n.GetAttributeValue("href", string.Empty).Contains("intranet")))
{
    // Change your href attribute here
    string newHref = anchor.GetAttributeValue("href", string.Empty).Replace("intranet", "somethingelse");
    anchor.SetAttributeValue("href", newHref);
}