2011-02-09 4 views
0

이 정규식 패턴으로 작업하는 임 :정규식 패턴의 일부를 선택적으로 만드는 방법은 무엇입니까?

|img_class.*?<img src="(.*?)"(.*?)<\/td>|ms 

하지만 img_class td가 비어있을 때 <img src="(.*?)"가 선택 사항 (src 부분이 아님)이기 때문에이 패턴이 실패 할 때가 있습니다.

|img_class.*?(<img src="(.*?)")?(.*?)<\/td>|ms 시도했지만 일치하지 않습니다.

(xpath 또는 더 나은 무언가를 사용할 수 있지만 꽤 큰 클래스를 사용하고 모든 것을 지금 다시 코딩하고 싶지는 않습니다.)

+2

일치하는 텍스트 샘플을 추가 할 수 있습니까? 너비와 옵션 부분없이. 업데이트 된 정규 표현식이 올바른 것 같습니다. –

+0

참고로, HTML을 파싱하는 것은 정규 표현식보다 낫다. 실제 SGML/HTML 파서가있다. –

답변

1
|img_class.*?(?:<img src="(.*?)")?(.*?)<\/td>|ms 
+0

지금까지 내가 볼 수있는 첫 번째 그룹은 전체 캡처가 일치하지 않는 경우 문제를 해결하는 데 도움이됩니다. –

+0

작동하지 않았으므로 과 일치 시키려고 시도했지만 이미지가 없으면 정규식은 이미지가 발견 될 때까지 지속되고 td 닫기 태그가 계속됩니다. – phollz

관련 문제