C#Regex-使用字符串中的特定单词查找href

时间:2015-09-03 08:52:52

标签: c# .net regex

如何找到包含特定字词的CSS属性?

我试过

href

然而,它并不匹配任何东西。

感谢。

1 个答案:

答案 0 :(得分:3)

我强烈建议不要在这种情况下使用正则表达式。我确信使用HTML解析器可以极大地方便任务。

以下是如何使用HtmlAgilityPack完成此操作的示例。通过解决方案>进行安装管理解决方案的NuGet包... 并使用

public List<string> HtmlAgilityPackGetHrefIfValueContains(string html, string href_text)
{
    var hrefs = new List<string>();
    HtmlAgilityPack.HtmlDocument hap;
    Uri uriResult;
    if (Uri.TryCreate(html, UriKind.Absolute, out uriResult) && uriResult.Scheme == Uri.UriSchemeHttp)
    { // html is a URL 
        var doc = new HtmlAgilityPack.HtmlWeb();
        hap = doc.Load(uriResult.AbsoluteUri);
    }
    else
    { // html is a string
        hap = new HtmlAgilityPack.HtmlDocument();
        hap.LoadHtml(html);
    }
    var nodes = hap.DocumentNode.SelectNodes("//*[@href]");
    if (nodes != null)
    {
       foreach (var node in nodes)
       {
           foreach (var attribute in node.Attributes)
               if (attribute.Name == "href" && attribute.Value.Contains(href_text))
               {
                   hrefs.Add(attribute.Value);
               }
        }
    }
    return hrefs;
 }

现在,您可以传递网页的html字符串或网址,并获取所有标记(如果您计划仅使用a hrefs,使用//a[@href] xpath) href_text