#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");
9 个回复
out
赞同来自:
看看URI规范。这可以帮助你很多。就性能而言,您几乎可以在适度的网页中提取所有HTTP链接。当我说谦虚时,我绝对不意味着一个页面都包含像ELisp手册那样的HTML手册。性能也是一个敏感话题。我的建议是衡量你的表现,然后决定是否要使用一个正则表达式或多个更简单的正则表达式来提取所有链接。 http://gbiv.com/protocols/uri/rfc/rfc3986.html
inemo
赞同来自:
URL的?如在图像/脚本/ css /等?
set
赞同来自:
只要HTML的作者使用了引号,它就会捕获所有标签中的URL:
我做了一个例子here。ddolor
赞同来自:
我没有时间尝试考虑可能无法正常工作的正则表达式,但我想评论一下,如果出现this level of ugliness,你肯定应该分解正则表达式,至少:
(这应该与电子邮件地址匹配) 编辑:我甚至不能适应它的一个帖子它是如此讨厌....pporro
赞同来自:
((的mailto:|(新闻|(HT | F)TP(S))://){1} \ S +?) 我从regexlib.com中取得了这个 [编者注:{1}在这个正则表达式中没有实际的功能; see this post]
uet
赞同来自:
所有HTTP和MAILTO的
所有链接,包括由href或src调用的相关链接。 然而,第二个只会让你看到使用双引号的链接。vvel
赞同来自:
借助Html Agility Pack,您可以使用:
guozao
赞同来自:
来自RegexBuddy图书馆:
网址:以全文查找 h2> 最终的字符类可以确保如果URL是某些文本的一部分,则URL之后的标点(例如逗号或句号)不会被解释为URL的一部分。
west
赞同来自:
根据http://tools.ietf.org/html/rfc3986 从任何文本中提取网址(不仅仅是HTML)