1

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

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

4

3 回答 3

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(...)

于 2011-06-10T23:36:17.153 回答
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() );
}
于 2011-06-10T23:46:56.013 回答
1

为什么不使用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;

于 2011-06-11T00:10:20.787 回答