2013-08-28 3 views
0

다음 정규식 (온라인에서 찾은 것)을 사용하여 HTML 페이지 내의 URL을 얻습니다.HTML에서 URL을 가져 오는 Regex

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

아래의 HTML에서 제대로 작동합니다.

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

그러나 HTML 페이지는 다음 자바 스크립트를 포함 할 때 내가

function buildurl(destpage) 

내가 콜론을 포함하는 다음과 같은 정규식을 시도 'destpage를'반환, 필요 이상을 반환하지만 잘못된 것 같습니다

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

모든 도움을 주시면 감사하겠습니다.

+3

http://stackoverflow.com/a/1732454/1043380 html 구문 분석을 위해 Regex 사용을 중지하십시오. 보다 적절한 도구를 사용하십시오. – gunr2171

+1

콜론 대신 '\ b' (단어 경계)를 사용해보십시오. – Jerry

+0

@Jerry URL 주변에 \ b를 추가하면 트릭을하는 것처럼 보였습니다. 건배 – saj

답변

3

모든 URL을 얻으려면 Regex 대신 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는"해당 그룹의 이름이 두 번째입니다.

관련 문제