c# Regex-查找字符串中特定单词的href
本文关键字:单词 href Regex- 查找 字符串 | 更新日期: 2023-09-27 18:11:03
如何找到包含特定单词的href
属性?
我试着
"href=([?;.:=%-'/'''''"]+[a-zA-Z]*[blablabla][?;.:=%-'/'''''"]+[a-zA-Z]*$)"
我强烈建议不要在这种情况下使用正则表达式。我确信使用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)。