2013-08-28 21 views
0

我使用以下正则表达式(我在网上找到)获取HTML页面内的URL;正则表达式从HTML中获取URL

 Regex regex = new Regex(@"url\((?<char>['""])?(?<url>.*?)\k<char>?\)"); 

适用于下面的HTML;

<div style="background:url(images/logo.png) no-repeat;">UK</div> 

但是返回比我更需要在HTML页面中包含下面的JavaScript,返回“destpage”

function buildurl(destpage) 

我尝试了以下的正则表达式包含一个冒号,但它似乎无效

:url\((?<char>['""])?(?<:url>.*?)\k<char>?\) 

任何帮助将不胜感激。

+3

http://stackoverflow.com/a/1732454/1043380停止使用Regex解析html。使用更合适的工具。 – gunr2171

+1

尝试使用'\ b'(单词边界)而不是冒号。 – Jerry

+0

@Jerry在网址附近添加\ b似乎有诀窍。干杯 – saj

回答

3

要获取所有网址,请使用HtmlAgilityPack而不是正则表达式。从他们的榜样页

HtmlDocument doc = new HtmlDocument(); 
doc.Load("file.htm"); 
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"]) 
{ 

} 

可以扩大,通过获取你的风格的URL,例如,使用//@style得到style节点和迭代通过这些提取url值。

0

只有结肠添加到前:

:url\((?<char>['""])?(?<url>.*?)\k<char>?\) 

第二个“url”是该组的名称。