2013-12-18 2 views
-2

와 나는 빙 HTML을하고 난 그것을에서 결과를 분석 할 :구문 분석 HTML 정규식

string BingRegex = "<div class=\"sb_tlst\"><h3><a href=\"(.*?)\""; 
    string[] results = Regex.Matches(responseStr, BingRegex).Cast<Match>().Select(m => m.Value).ToArray(); 

나는 배열에 결과를 얻을 수 있지만 각 결과에 패턴을 추가, 뭔가 같은 :

<div class=\"sb_tlst\"><h3><a href=\"www.cnn.com\" 
<div class=\"sb_tlst\"><h3><a href=\"www.google.com\" 
<div class=\"sb_tlst\"><h3><a href=\"www.gmail.com\" 

어떤 아이디어로도이 문제를 해결하고 URL 만 얻을 수 있습니까?

+4

html을 구문 분석하기 위해 정규식을 사용하지 마십시오. – gleng

+3

참조 http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags –

+1

잘 할 수 있지만 빨리 잘못 될 것입니다. –

답변

2

것, 대체 :

Select(m => m.Value) 

포함 :

Select(m => m.Value.Groups[1].Value) 

아마도 그룹이 실제로 채워 졌는지 확인하기 위해 약간의 오류 처리가 필요합니다.

하지만 가장 좋은 해결책은 Regex 또는 HTML 파서를 사용하는 것이 아니라 정확히 Bing search API을 사용하는 것입니다.

+0

과 같은 것을 사용해보십시오. 고마워요. 그것은 완벽하게 작동합니다! – MTA

5

정규식을 사용하여 HTML을 구문 분석하지 않는 것이 좋습니다. 제안 된대로 HtmlAgilityPack을 사용하십시오 (here). 그런 다음 XPath를 사용하여 필요한 특성 값을 얻으십시오. 샘플 사업부에 대한

는 XPath

<div class="sb_tlst"> 
    <h3> 
     <a href="www.gmail.com"/> 
    </h3> 
</div> 

은 제외하고 (좋은 아이디어 인)는 HTML 파서와 함께이 일에서

/div[@class='sb_tlst']/h3/a/@href