我正在尝试从标签中提取 URL,但没有得到 https://website.com/-id1 ,我正在获取标签链接文本。这是我的代码:
string text="<a style=\"font - weight: bold; \" href=\"https://website.com/-id1\">MyLink</a>";
string parsed = Regex.Replace(text, " <[^>] + href =\"([^\"]+)\"[^>]*>", "$1 " );
parsed = Regex.Replace(parsed, "<[^>]+>", "");
Console.WriteLine(parsed);
我得到的结果是MyLink,这不是我想要的。我想要类似的东西
https://website.com/-id1
我们将不胜感激任何帮助或链接。
请您参考如下方法:
正则表达式可用于非常具体、简单的 HTML 情况。例如,如果文本包含仅 一个标签,您可以使用"href\\s*=\\s*\"(?<url>.*?)\""提取 URL,例如:
var url=Regex.Match(text,"href\\s*=\\s*\"(?<url>.*?)\"").Groups["url"].Value;
此模式将返回:
https://website.com/-id1
这个正则表达式没有做任何花哨的事情。它寻找 href=带有可能的空格,然后以非贪婪的方式 ( .*? ) 捕获第一个双引号和下一个双引号之间的任何内容。这是在命名组 url 中捕获的.
任何更花哨的事情都会变得非常复杂。例如,同时支持单引号和双引号需要特殊处理以避免以单引号开始并以双引号结束。字符串可以是多个 <a>使用两种引号的标签。
对于复杂的解析,最好使用像 AngleSharp 这样的库或 HtmlAgilityPack
