2016-12-15 1 views
-3

다음과 같은 문제가 있습니다. 일부 HTML 코드가있어서 태그 내용을 가져와야합니다. 수백만 개의 하위 문자열이나 그와 비슷한 것을 사용하고 싶지 않습니다. 나는 정규식을 사용하고 싶지만 클래스, ID, 또는 아무것도없이 태그를 필터링하는 데 문제가있다. 여기 내 정규식입니다 :Python 정규식 태그 내용이 태그 이름이 아닙니다.

match = re.search('(?<=<span(.+)?>)(.*)(?=</span>)', '<span class="red">color</span>') 

파이썬 내가 도움에서

<span>color</span> 

감사합니다 모두에서

<span class="red">color</span> 

및 에서 콘텐츠를하려는 오류

sre_constants.error: look-behind requires fixed-width pattern 

다음 던져!

+0

[RegEx는 XHTML 자체 포함 태그를 제외한 공개 태그와 일치 할 수 있습니다] (http://stackoverflow.com/questions/) 1732348/regex-match-open-tags-except-xhtml-self-contained-tags) – arco444

+1

* 왜 사람들은 regex를 사용하여 HTML을 구문 분석하려고합니까? –

+1

정규식을 사용해야합니까? 왜 beautifull 스프와 같은 html 파서가 – Tobey

답변

0

간단한 대답 : findall을 사용하여 보이지 않는 부분을 건너 뛰고 캡처 그룹을 가져옵니다.

<span(.+)?>(.*?)</span> 

그러나 것이다이 은 많은 경우에 실패합니다. 예 : 중첩 태그, 텍스트가 포함 된 문자열 </span> 등 ...