正则表达式获取href中的链接。 [asp.net]

时间:2009-09-30 07:42:32

标签: c# asp.net regex

嗨我遇到问题让我的正则表达式工作。我正在使用C#asp.net 我将发布我现在使用的代码和我无法工作的第二个正则表达式来获取href =“LINK”中的任何内容

事先提前

var textBody = "lorem ipsum... <a href='http://www.link.com'>link</a>";


        var urlTagPattern = new Regex(@"<a.*?href=[""'](?<url>.*?)[""'].*?>(?<name>.*?)</a>", RegexOptions.IgnoreCase);



        //THIS IS THE REGEX
        var hrefPattern = new Regex(@"HREF={:q}\>", RegexOptions.IgnoreCase);




        var urls = urlTagPattern.Matches(textBody);


        foreach (Match url in urls)
        {

            var hrefs = hrefPattern.Match(url.ToString());


            litStatus.Text = hrefs.ToString();
        }

3 个答案:

答案 0 :(得分:13)

欢迎使用不要使用正则表达式解析HTML 的每日分期付款。在本版不要使用正则表达式解析HTML 中,我们将提醒您不要使用正则表达式来解析HTML,因为HTML无法通过正则表达式可靠地解析,并且许多有效的HTML构造将会中断天真的正则表达式提出。我们今天不会在不要使用正则表达式解析HTML 中提及网络上常用的所有其他无效的。

同样在不要使用正则表达式来解析HTML ,我们将链接到Html Agility Pack,这是一个可以用来正确解析HTML并随后提取链接URL的.NET库可靠地只需几行代码(该页面上有一个非常相似的例子)。

我们希望您今天享受不要使用正则表达式解析HTML ,并期待明天再次见到您的另一个激动人心的版本不要使用正则表达式来解析HTML < / em>,当有人发布关于使用正则表达式解析HTML的另一个问题时。但是这一切都来自不要使用正则表达式解析HTML 。再见!

答案 1 :(得分:1)

以下示例搜索输入字符串并打印出字符串中的所有href =“...”值及其位置。它通过构造一个已编译的Regex对象,然后使用Match对象迭代字符串中的所有匹配来完成此操作。在此示例中,元字符匹配任何空格字符,\ S匹配任何非空格字符。

'VB

Sub DumpHrefs(inputString As String)

Dim r As Regex
Dim m As Match

r = New Regex("href\s*=\s*(?:""(?<1>[^""]*)""|(?<1>\S+))", _
    RegexOptions.IgnoreCase Or RegexOptions.Compiled)

m = r.Match(inputString)
While m.Success
    Console.WriteLine("Found href " & m.Groups(1).Value _
        & " at " & m.Groups(1).Index.ToString())
    m = m.NextMatch()
End While

End Sub

// C#

void DumpHrefs(String inputString) {

Regex r;
Match m;

r = new Regex("href\\s*=\\s*(?:\"(?<1>[^\"]*)\"|(?<1>\\S+))",
    RegexOptions.IgnoreCase|RegexOptions.Compiled);
for (m = r.Match(inputString); m.Success; m = m.NextMatch())
{
    Console.WriteLine("Found href " + m.Groups[1] + " at "
        + m.Groups[1].Index);
}

}

答案 2 :(得分:0)

第二个正则表达式应为:

href=['"](?<link>[^'"]*)