c# Regex-查找字符串中特定单词的href

本文关键字:单词 href Regex- 查找 字符串 | 更新日期: 2023-09-27 18:11:03

如何找到包含特定单词的href属性?

我试着

"href=([?;.:=%-'/'''''"]+[a-zA-Z]*[blablabla][?;.:=%-'/'''''"]+[a-zA-Z]*$)"

c# Regex-查找字符串中特定单词的href

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

这里是一个如何使用 htmllagilitypack 完成的示例。通过Solution> Manage NuGet Packages for Solution…和使用

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字符串或Web页面的URL,并获得包含href_text的所有标记(如果您计划仅获取a hrefs,则使用//a[@href] xpath)。