2009-12-12 18 views
0

정규식에 대한 검색 및 검색을 수행했지만이 작업을 수행 할 수없는 것을 찾지 못했습니다.Regex HTML 추출 C#

내가 얻을 필요가 12.32, 2300, C#에서 다음 문자열에서 4.644 M 및 12,444.12 :이에 일어나서

<td class="c-ob-j1a" property="c-value">12.32</td> 
<td class="c-ob-j1a" property="c-value">2,300</td> 
<td class="c-ob-j1a" property="c-value">4.644 M</td> 
<td class="c-ob-j1a" property="c-value">12,444.12 M</td> 

:

MatchCollection valueCollection = Regex.Matches(html, @"<td class=""c-ob-j1a"" property=""c-value"">(?<Value>P{</td>})</td>"); 

감사합니다!

+10

정규 표현식을 사용하여 HTML을 구문 분석하지 마십시오. http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – dtb

+1

Omg 나는 비슷한 질문에 대한 놀라운 답변을 기억할 수 있었으면 좋겠다. 어떻게 정규식을 사용하여 html (신뢰할 수있는)을 파싱 할 수 없는지 ... 누군가가 저에게 명예를 줄 것이라고 확신합니다. :-) – Tom

+0

@dtb : 예 !!! See ... 나는 내 의견을 타이핑하는 동안 일어났다 :-). – Tom

답변

4

HTML을 구문 분석 할 때는 regexp를 사용하지 마십시오. howto에 대한이 게시물을 참조하십시오. What is the best way to parse html in C#? 또는 HtmlAgilityPack http://www.codeplex.com/htmlagilitypack

을 사용할 수 있지만 실제로 정규 표현식을 사용하려면이 방법을 사용해야합니다.

<td[^>](.+?)<\/td> 
+0

HTML 구문 분석에 더 좋은 점은 무엇입니까? – jonperl

+2

HTML 파서입니다. 이봐. –

2
"value">(.*?)<\/td> 

해야합니다. 필요한 값은

+0

고마워! RegEx 튜토리얼에없는 이유는 무엇입니까 – jonperl

+0

대단히 감사합니다 ... –

0

가 이런 식으로 뭔가 일을해야 괄호로 표시 캡처 그룹에 개최 될 것입니다 : 코드 샘플에 대해서는

/<td[.]*?>(.+)<\/td>/ 

이 아마 더 유지 보수가 될 것이다 :

MatchCollection valueCollection = Regex.Matches(html, @"<td[^>]*?>(?<Value>.*?)</td>") 

html이 데이터를 추출하지 않으려는 다른 td으로 구성되어 있으면 원래 정규식이 정상적이어야합니다.

0

아마 문서의 다른 부분을 캡처 실수 피하기 위해 매우 엄격한 일치로 시작 했죠 :

static void Main(string[] args) 
    { 
     string html = @"<td class=""c-ob-j1a"" property=""c-value"">12.32</td> 
<td class=""c-ob-j1a"" property=""c-value"">2,300</td> 
<td class=""c-ob-j1a"" property=""c-value"">4.644 M</td> 
<td class=""c-ob-j1a"" property=""c-value"">12,444.12 M</td>"; 

     var matches = Regex.Matches(html, @"<td class=""c-ob-j1a"" property=""c-value"">([^<]*)</td>"); 
     foreach (Match match in matches) 
      Console.WriteLine(match.Groups[1].Value); 
    } 

(그리고 나는 또한 Html Agility Pack 당신이 경우 추천하는 기회를 갖고 싶습니다 아직 시도하지 않았다.)

-1

만약 당신이 제시 한 형식으로 td 태그를 파싱하면 정규식을 얻을 수있다.

일반적으로 정규식을 사용하여 html 구문 분석이 작동하지 않습니다. 이유에 대해 설명하는 많은 질문을 여기서 찾을 수 있습니다