提取链接regex c#

时间:2011-06-10 23:32:55

标签: c# regex capturing-group

过去两个小时我一直试图解决这些问题,但似乎找不到任何解决方案。

我需要从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

任何人都知道如何解决这个问题,如何在逐字字符串中使用双引号(例如@“&lt;&gt;”das“sa”)

3 个答案:

答案 0 :(得分:2)

转码双引号示例:@"some""test"
正则表达式示例:"<a href=\"(.*?)\">"

    var match = Regex.Match(html, "<td><a href=\"(.*?)\">", 
RegexOptions.Singleline); //spelling error
    var url = match.Groups[1].Value;

您也可以使用Regex.Matches(...)代替Regex.Match(...)

答案 1 :(得分:2)

如果你想让每个元素都像这样使用代码:

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

答案 2 :(得分:1)

为什么不用HTML-parsing解析这是好的和快速的HTML-Parsing。 例如:

   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;