2009-11-20 4 views
1

일치하는 요소를 그룹화 할 수는 있지만 결과 일치 그룹에는 일치하지 않는 방법이 있습니까?.net regex 그룹이 일치하지 않는 경우

<td>text 1</td> 
<td><a href=whatever>this is</a> text 2</td> 

내가 구문 분석하는 "텍스트 (1)"을 원하고 "이 텍스트 2": 예를 들어, 나는 두 줄의 문자열이 있다고 가정합니다. 내가 지금하고 있어요이 패턴을 사용하고 있습니다 : 나는 패턴이 그들에게 0 또는 1 시간과 일치 할 수 있도록

<td>(<a href=.+?>)?(.+?(</a>)?.+?)</td> 

은 기본적으로 앵커 태그를 그룹화. 나는 그 그룹이 경기 결과에 나타나기를 원하지 않는다. (나는 그들을 쉽게 무시할 수있다.) 이것을 할 수있는 적절한 방법이 있습니까?

+1

정규식은 수행하려고하는 것으로 충분하지 않습니다. http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 –

답변

4

당신은 비 캡처 그룹을 사용할 수 있습니다

(?:xxx) 

비 캡처 그룹은 당신이 그것에 연산자를 사용할 수 있다는 점에서 정상 군처럼 작동합니다. 하지만 아무 것도 포착하지 않으며 역 참조를 위해 사용할 수 없습니다.

+0

thanks 그게 내가 원하는거야. 하지만 캡쳐 그룹 안에 캡쳐되지 않은 그룹을 중첩하면 원하는 것을하지 않는 것처럼 보입니다. 불가능한가요? (:? )(.+?(?:) 내가와 일치하는 경우 – toasteroven

+0

특별히 두 번째 예를 들어,.? +) 가 제대로 귀하의 코멘트에 정규식에서 – toasteroven

+0

일치하지 않는,의'href'는 선택하지 않습니다 . ' (? : )?(.+?(?:)?. +?)'을 사용해보세요. BTW-- HTML을 파싱하는 경우 정규식은 매우 나쁜 접근 방식입니다. 대신 http://www.codeplex.com/htmlagilitypack – Andomar

관련 문제