正则表达式获取href中的链接。

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

提前thx

var textBody = "lorem ipsum... link"; var urlTagPattern = new Regex(@"<a.*?href=[""'](?.*?)[""'].*?>(?.*?)", 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(); } 

欢迎阅读每日不使用正则表达式解析HTML 。 在本期“ 请勿使用正则表达式解析HTML”中 ,我们将提醒您不要使用正则表达式来解析HTML,因为HTML无法通过正则表达式可靠地解析,并且许多有效的HTML结构将打破所提出的天真正则表达式。 我们不会在今天不要使用Regex To Parse HTML中提及网络上常用的所有其他无效的。

同样在Do not Use Regex To Parse HTML中 ,我们将链接到Html Agility Pack ,这是一个.NET库,可以用来正确解析HTML,然后在几行代码中可靠地提取链接URL(非常类似的例子出现在该页面上)。

我们希望您今天享受不要使用正则表达式解析HTML ,并期待明天再次见到您的另一个令人兴奋的版本“ 请勿使用正则表达式解析HTML” ,当有人发布有关使用正则表达式解析HTML的另一个问题时。 但这就是现在不要使用Regex To Parse HTML 。 再见!

以下示例搜索输入字符串并打印出字符串中的所有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 

结束子

// 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); } 

}

第二个正则表达式应该是:

 href=['"](?[^'"]*)