2013-08-28 17 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」是該組的名稱。