.net 用于解析网页链接的正则表达式?
我正在寻找一个.NET正则表达式从网页中提取所有URL,但还没有找到一个足够全面的方法来涵盖指定链接的所有不同方式 还有一个附带问题:.net 用于解析网页链接的正则表达式?,.net,html,regex,.net,Html,Regex,我正在寻找一个.NET正则表达式从网页中提取所有URL,但还没有找到一个足够全面的方法来涵盖指定链接的所有不同方式 还有一个附带问题: 是否有一个正则表达式来管理所有的正则表达式?或者我最好使用一系列不太复杂的正则表达式,而只是对原始HTML使用多个传递?(速度与可维护性)查看URI规范。那对你会有很大帮助。就性能而言,您几乎可以在一个普通网页中提取所有HTTP链接。当我说谦虚时,我绝对不是指像ELisp手册那样的一页包罗万象的HTML手册。此外,表演也是一个敏感的话题。我的建议是测量您的性能,
是否有一个正则表达式来管理所有的正则表达式?或者我最好使用一系列不太复杂的正则表达式,而只是对原始HTML使用多个传递?(速度与可维护性)查看URI规范。那对你会有很大帮助。就性能而言,您几乎可以在一个普通网页中提取所有HTTP链接。当我说谦虚时,我绝对不是指像ELisp手册那样的一页包罗万象的HTML手册。此外,表演也是一个敏感的话题。我的建议是测量您的性能,然后决定是使用单个正则表达式提取所有链接,还是使用多个更简单的正则表达式提取所有链接
URL的?在图像/脚本/css/等中
%href=“(.[”]*)”%
这将从所有a标记捕获URL,只要HTML作者使用引号:
<a[^>]+href="([^"]+)"[^>]*>
我没有时间尝试和思考一个可能不起作用的正则表达式,但我想说的是,你应该非常明确地分解你的正则表达式,至少如果它达到:
(?:(?:\r\n)?[\t])*(?:(?:(?:[^()@;:\\”\[\]\000-\031]+(?:(?:(?:\r\n)?[\t]
)+|\Z |(?=[\[“()@,;:\\”\[\]]))124;“(?:[^\“\r\\]\\.\.\。。。(?:(?:\r\n)?[\t])*”(?:(?:)
\r\n)?[\t])*(?:\。(?:(?:\r\n)?[\t])*(?:[^()@;:\\”\[\]\000-\031]+(?:(?:)(
?:\r\n)?[\t])+\Z|(?=[\[“()@,;:\\”\[\]])))124;“(?:[^\“\r\\]\\\\.\。|(?:(?:\r\n)?[
\t] )*“(?:(?:(?:\r\n)?[\t])*)*@(?:(?:\r\n)?[\t])*(?:[^()@;:\\”\[\]\000-\0
....剪断*。。。。
*))*@(?:(?:\r\n)?[\t])*(?:[^()@;:\\”\[\]\000-\031]+(?:(?:(?:\r\n)?[\t])
+|\Z |(?=[\[“()@,;:\\”\[\]]))\[([^\[\]\r\\]\\\\].*])(?:(?:(?:\r\n)?[\t])*)(?:\
.(?:(?:\r\n)?[\t])*(?:[^()@;:\\”\[\]\000-\031]+(?:(?:(?:\r\n)?[\t])+\124z
|(?=[\[“()@,;:\\”\[\]]))\[([^\[\]\r\\]\\\\\].*\](?:(?:\r\n)?[\t])*)*>(?:(
?:\r\n)?[\t])*)*)?;\s*)
(这应该与电子邮件地址匹配)
编辑:我甚至不能把它放在一个帖子上,太恶心了
((mailto\:|(news|(ht|f)tp(s?))\://){1}\S+)
这是我从你那里拿的
[编者注:{1}在这个正则表达式中没有真正的函数;]所有的HTTP和MAILTO
(["'])(mailto:|http:).*?\1
href或src调用的所有链接,包括相关链接
#Matches things in single or double quotes, but not the quotes themselves
(?<=(["']))((?<=href=['"])|(?<=src=['"])).*?(?=\1)
#Maches thing in either double or single quotes, including the quotes.
(["'])((?<=href=")|(?<=src=")).*?\1
#匹配单引号或双引号中的内容,但不匹配引号本身
(?使用,您可以使用:
HtmlDocument doc = new HtmlDocument();
doc.Load("file.htm");
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a@href")
{
Response.Write(link["href"].Value);
}
doc.Save("file.htm");
从RegexBuddy库:
URL:全文查找
最后一个字符类确保,如果URL是某些文本的一部分,则URL后面的逗号或句号等标点符号不会解释为URL的一部分
\b(https?| ftp |文件)://[-A-Z0-9+&@#/%?=~ |!:,.;]*[-A-Z0-9+&@#/%=~ |]
据
从任何文本(不仅仅是HTML)提取url
强制性提及
HtmlDocument doc = new HtmlDocument();
doc.Load("file.htm");
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a@href")
{
Response.Write(link["href"].Value);
}
doc.Save("file.htm");
(http\\://[:/?#\\[\\]@!%$&'()*+,;=a-zA-Z0-9._\\-~]+)