2011-10-20 4 views
0

오늘 나는 정규식으로 머리를 부러 뜨린다. 텍스트 일부를 추출 할 수 없습니다.누군가가 RegExp를 사용하여 텍스트를 추출 할 수 있습니까?

<!--TEXT[title]--> 
sometext 1 
<!--END--> 
<!--TEXT[title]--> 
sometext 2 
<!--END--> 

나는 다음과 같은 일을해야 정규 표현식을 필요로 가정 난이 정규식 코드 mytext.match(/<!--TEXT[([.|\w|\r|\n]+)<!--END-->/m);

+3

인가? 그렇다면 HTML을 정규식으로 구문 분석하지 마십시오. http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 대신 DOM을 구문 분석하십시오 . –

+1

@JackManey 그건 내가 좋아하는 대답이다. – MrMisterMan

+0

ajax를 통해 텍스트를로드합니다. – iLevi

답변

3

["title]-->sometext1" 
,"title]-->sometext2"] 

배열이 얻을 싶어 : 내 텍스트는 다음과 같이이다

<\!--TEXT\[([^\]]*)\]-->\s*\n(.*)(?!<\!--END-->) 

이 텍스트가 DOM에있는 경우 DOM을 구문 분석하는 것이 훨씬 더 좋습니다 이제까지.

설명 : 일부 HTML 내부에이 텍스트가

<\!--TEXT\[ // Match the start. 
([^\]]*) // Match (in group 1), everything up until the next ']' 
\]-->\s*\n // Match to the end of this line. 
(.*) // Match anything (in group 2). 
(?!<\!--END-->) // Stop before the end tag is next. (This will mean you get everything up to, but not including the previous line break). 
+1

물론 이것은 중첩 된 주석으로는 실패하지만 이것은 OP가 알아야 할 것입니다 ... – FailedDev

+0

중첩 된 주석을 다루는 경우 렉서 또는 DOM이 필요합니다. 반면에이 특별한 경우에는 중첩 된 것처럼 보이지 않습니다 (오류가없는). – Thor84no

관련 문제