提取链接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")

提取链接regex c#

转义双引号示例:@"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;