문제

HTML 파서에 대한 정규 표현을 작성하려고합니다.

HTML 태그를 주어진 속성 (예 : <div> ~와 함께 class="tab news selected" ) 하나 이상이 포함되어 있습니다 <a href> 태그. regexp는 전체 태그와 일치해야합니다 ( <div> 에게 </div>). 나는 항상 "메모리 소진"오류를 얻는 것 같습니다. 내 프로그램은 아마도 일치하는 태그로 찾을 수있는 모든 태그를 가져옵니다.

Boost Regex 라이브러리를 사용하고 있습니다.

다른 팁

당신은 아마 볼 것입니다 이 질문 답장. Regexps 및 HTML. 요점은 HTML을 구문 분석하기 위해 정규 표현식을 사용하는 것이 어떠한 이상적인 솔루션이 아니라는 것입니다.

다른 사람들이 말했듯이, 가능하다면 Regexes를 사용하지 마십시오. 코드가 실제로 XHTML 인 경우 (예 : 잘 형성된 XML) AI는 두 가지를 모두 추천 할 수 있습니다. xerces 그리고 국외 거주자 XML Parsers는 Regexes보다 훨씬 더 나은 작업을 수행 할 것입니다.

아마도 regexps가 최선의 솔루션은 아니지만 이미 5 개의 다른 라이브러리를 사용하고 있으며 찾을 때 부스트가 잘 작동합니다. <a href> 태그 및 키워드.

이 regexps를 사용하고 있습니다.

/<a[^\n]*/searched attribute/[^\n]*>[^\n]*</a>/ 찾기 위해 <a href> 태그 및 :

/<a[^\n]*href[[^\n]*>/searched keyword/</a>/ 링크를 찾기 위해

(btw는 더 잘할 수 있습니까? - 나는 Regex에서 빨기;))))))

지금 필요한 것은 포함 된 태그를 찾는 것입니다 <a href>'S와 나는 Regexps가 올바른 일을 할 것이라고 생각합니다. 아마도 Piotr이 말한 것처럼 나만의 구문 분석 기능을 작성해야 할 것입니다.

플렉스처럼 : 일치합니다u003Cdiv> 케이스 무의미한 일치와 함께 파서를 "div matched"상태에 넣고 처리를 계속하십시오.u003C/div> 상태를 재설정합니다.

이것은 2 개의 Regexps와 상태 변수가 필요합니다.

sgml 태그 유효한 문자는 [a-za-z_ :]입니다.

so : / <[a-za-z _ :]+> / 태그와 일치합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top