提取链接regex c#
本文关键字:regex 链接 提取 | 更新日期: 2023-09-27 17:58:49
在过去的两个小时里,我一直在努力解决这些问题,但似乎找不到任何解决方案。
我需要从HTML
文件中提取链接。有100多个链接,但其中只有25个是有效的。
有效链接放置在内
<td><a href=" (link) ">
首先,我遇到了(现在仍然存在)逐字字符串中的双引号问题。所以,我用"普通"字符串逐字逐句地替换了它,这样我就可以使用''"for",但问题是我写的这个Regex
不起的作用
Match LinksTemp = Regex.Match(
htmlCode,
"<td><a href='"(.*)'">",
RegexOptions.IgnoreCase);
因为我得到"<td><a href="http://www.google.com">
而不是http://www.google.com
作为输出
任何人都知道我如何解决这个问题,以及我如何在逐字逐句的字符串中使用双引号(例如@"<>"das"sa")
转义双引号示例:@"some""test"
Regex样品:"<a href='"(.*?)'">"
var match = Regex.Match(html, "<td><a href='"(.*?)'">",
RegexOptions.Singleline); //spelling error
var url = match.Groups[1].Value;
此外,您可能希望使用Regex.Matches(...)
而不是Regex.Match(...)
如果您想获取每个元素,请使用以下代码:
string htmlCode = "<td><a href='" www.aa.pl '"><td> <a href='" www.cos.com '"><td>";
Regex r = new Regex( "<a href='"(.*?)'">", RegexOptions.IgnoreCase );
MatchCollection mc = r.Matches(htmlCode);
foreach ( Match m1 in mc ) {
MessageBox.Show( m1.Groups[1].ToString() );
}
为什么不用HTML解析来解析它呢?HTML解析既好又快。示例:
string HTML = "<td><a href='http://www.google.com'>";
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(HTML);
HtmlNodeCollection a = doc.DocumentNode.SelectNodes("//a[@href]");
string url = a[0].GetAttributeValue("href", null);
Console.WriteLine(url);
Console.ReadLine();
您需要导入using HtmlAgilityPack;