2011-02-04 4 views
0

HTML 페이지에서 모든 테이블 행을 추출하고 싶습니다. 그러나 @"<tr>([\w\W]*)</tr>" 패턴을 사용하는 것이 효과적이지 않습니다. </tr>의 마지막 발생에 대한 <tr>의 첫 번째 결과 인 하나의 결과를 제공합니다. 그러나 나는 모든 경우에 <tr>...</tr> 값을 원합니다. 아무도 내가 이것을 할 수있는 방법을 말해 줄 수 있습니까?C# Regex 문제

답변

2

마크와 동의합니다 : HTML Agility Pack 라이브러리를 사용해야합니다. 정규식에 대해

, 당신은 같은 갈해야 : 비 욕심 패턴의

@"<tr>([\s\S]*?)</tr>" 

, 당신은 모든 TR에 대해 하나의 일치를 얻을 수 있습니다.

+0

대단히 ... 많은 감사합니다. 정확히 내가 원했던 것입니다. .. – Barun

+0

또 다른 질문은 ... 내가 모든 정규식 [C#] 속성을 제대로 배울 수있는 링크 또는 책 이름을 제공 할 수 있습니까? – Barun

+0

@Barun, 시도해보십시오. http://www.regular-expressions.info/tutorial.html –

5

[\w\W]*과 일치하므로 <tr>에서 마지막으로 </tr>까지 일치합니다.

정규 표현식은 HTML이 일반 언어가 아니기 때문에 제대로 작동하지 않습니다. "<tr>(.*?)</tr>" 플래그와 함께 RegexOptions.Singleline 플래그와 같은 지연 수정자를 실제로 사용하려는 경우 모든 경우에서 작동하는 것은 아닙니다.

HTML을 구문 분석하려면 HTML 구문 분석기가 필요합니다. HTML Agility Pack을 시도해보십시오.

+1

제발 나를 위해 몇 가지 C# 코드를 제공 할 수 – Barun

+2

그리고 우리 모두가 당신이 정규식으로 HTML을 구문 분석하려고하면 어떻게되는지 알고 ... http://stackoverflow.com/questions/1732348/regex-match-open- tags-except-xhtml-self-contained-tags/1732454 # 1732454 –

+0

또 다른 질문은 어쨌든 정규식을 사용하여 수행 할 수 있습니까? – Barun