c#url通过正则表达式提取

时间:2012-06-21 14:43:49

标签: c# .net regex

  

可能重复:
  Regular expression for parsing links from a webpage?

如何使用正则表达式从HTML中查找所有网址。我只需要网页的网址,所以我想添加以“.css”或“.jpg”或“.js”等结尾的网址排除。

HTML示例:

<a href=index.php?option=content&amp;task=view&amp;id=2&amp;Itemid=25 class="menu_selected" id="">Home</a>

<a href="http://data.stackexchange.com">data</a> |
                <a href="http://shop.stackexchange.com/">shop</a> |
                <a href="http://stackexchange.com/legal">legal</a> |

由于

1 个答案:

答案 0 :(得分:2)

如果可以,请避免使用正则表达式,而是使用正确的HTML解析器。例如,引用HTML Agility Pack,并使用以下内容:

var doc = new HtmlDocument();
doc.LoadHtml(yourHtmlInput);
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]")
                              ?? Enumerable.Empty<HtmlNode>())
{
    string href = link.Attributes["href"].Value;
    if (!String.IsNullOrEmpty(href))
    {
        // Act on the link here, including ignoring it if it's a .jpg etc.
    }
}