2014-12-21 3 views
0

앵커에 포함 된 이미지를 얻으려고합니다. 이 작업을 수행하는 좋은 방법은 DOM을 파싱하는 것이지만 여기서 메모리를 절약하려고합니다.부분 dom 구문 분석을위한 Negative Lookahead Regex

<a href=''><img src=''></a> 

위의 예의 솔루션은 꽤 똑 바른 <a[^>]*?href=['\"](.*?)['\"][^>]*?>[\s\S]*?<img입니다. 그러나 더 복잡한 예제에서 정규식 실패, 잘못된 앵커 전체 문자열을 수집

<a href=''></a><a href=''><img src=''></a> 

, 내가 어떻게 든 부정적 예측을 추가해야하고 내가 지금까지 시도하고 (?!</a>)<a[^>]*?href=['\"](.*?)['\"][^>]*?>[\s\S]*?<img하지만 몇 가지 이유가 있습니다 차이 없음.

+2

나는 SAX 파서를 제안 할 수 있습니다? 전체 DOM을 메모리에 보유하지 않고 전체 구문 분석을 수행합니다. –

답변

1

중간에 .*[\s\S]* 사이에 부정적 선행 검사를하십시오. 닫는 앵커 태그와도 일치하기 때문입니다.

<a[^>]*?href=['\"](?:(?!<\/a>).)*?['\"][^>]*?>(?:(?!<\/a>)[\s\S])*?<img 

DEMO

+0

굉장, 그게 작동하는 것, thnx :) – Evan