2012-04-24 8 views
0

정규 표현식에 대해 더 많은 경험이있는 사람의 도움을 받고 싶습니다. 하이퍼 링크의 값을 파싱 할 HTML 코드가 있습니다. 전체 페이지에서 코드는 아래에 첨부 된 HTML에서 찾을 수 있습니다html 코드에서 URL을 구문 분석하기위한 정규식

http://dl.dropbox.com/u/4571235/example.html

내가 문서의 각 '가격 비교'버튼 후 하이퍼 링크를 싶어.

모든 조언을 환영합니다. Laziale

+3

어쩌면 먼저 읽어야 : http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 –

답변

1

체크 here 미리 감사드립니다.

이 코드를 시도 :

나는 소스 코드에 다른 URL이도 있다는 것을 볼
public static bool isValidUrl(ref string url) 
{ 
    string pattern = @"^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*[^\.\,\)\(\s]$"; 
    Regex reg = new Regex(pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase); 
    return reg.IsMatch(url); 
} 
+0

난 단지 그 링크를 얻으려면 가격 비교 버튼. 양식의 모든 링크가 아닙니다. 그게 가능하니? 감사합니다 – Laziale

0

- 나는 다음과 같은 정규식을 제안 할 수 있지만, 각 텍스트는 '가격 비교'는 경우에만 제대로 작동합니다 (예 : '올바른'URL 사이에 다른 URL이없는 경우) 관심있는 URL 바로 뒤에옵니다. 일치하는 URL없이 '가격 비교'텍스트가있는 경우 정규식은 일부 규칙에 따라 변경해야합니다.

value="Compare prices"(?:.*?)<a\s+href="([^"]*?)" 

는 URL이 일치하는 그룹 1.

+0

아마도 사이에,이 ' Compare prices' – sln

+0

내 나쁜, 의견을 무시 – sln

0

보통 링크는 "태그"에 또는 "링크"또는 "IMG의 SRC ="URL "에있을 것입니다.
하는 경우 a href 태그에서 유효한 href를 확인한 다음 시작에 대한 유효성 검사를 수행 할 수 있습니다.
0. 먼저 버튼이 포함 된 형태로 내부 HTML을 모두 가져옵니다.
1. 추가 검사를 위해 href 태그를 붙잡 으십시오 ... pattern = "< a [^ >] * >"또는 패턴 = "< 링크 [^ >] * >"또는 패턴 = "< IMG * > [> ^]"태그의 각각은 상기 링크 SRC 및 HREF 태그 꺼내 위해 그
2.
3.이어서 확인 URL이 유효한지 확인하십시오.
참고 : 0 단계를 수행 할 수 있으면 가장 관련있는 특정 유형의 모든 속성을 가져 와서 정규 표현식을 수행 할 수 있습니다.

관련 문제