2013-10-13 2 views
0

주석 처리되지 않은 스크립트 태그와 일치시키고 싶습니다. 이를 위해 나는이 정규식을 사용하려고 시도했다 :주석 처리되지 않은 html 태그와 일치

(?is)((?<!<!--(?!-->))<script[^>]*>) 

논리가 차례로이다 <!--가 선행되지 <script[^>]*> 그것을 물어이었다 --> 다음에하지,하지만 분명히 (?!-->)<script[^>]*>에서 중지하지 않습니다 그 후에는 -->으로 끝까지갑니다. <에서 멈추라 고 말하면 <script...에 어떻게 말합니까?

+0

이 상황에서 [this] (http://stackoverflow.com/a/1732454/1702990) 링크가 필요할 수도 있습니다. – Sinkingpoint

+0

실례합니다. 나는 언젠가 그 링크로 차임 할 첫 번째 사람이 될 것이다 ... :) – Josh

+0

"b"와 "c"사이에 있지 않은 모든 "a"를 정규식으로 캡처하도록 요청하면 도움이 될까요? – makc

답변

0

그것을 위해, 당신은 전에 모든 주석 내용을 검색 할 수 있습니다 후, 교대, 검색 스크립트 태그 및 캡처 그룹이 서브 패턴을 넣어 :

<!--(?>[^-]+|-(?!->))*-->|(?i)(<script[^>]*>(?>[^<]+|<(?!/script>))*</script>) 

그런 결과가 캡처 그룹에 . 당신이 replaceFirst() 방법을 사용하려면

, 당신은 사용할 수 있습니다

패턴

(?i)((?><!--(?>[^-]+|-(?!->))*-->|[^<]+|<(?!script))*)(<script[^>]*>(?>[^<]+|<(?!/script>))*</script>) 

교체

$1 ### what you want ### 

(또는 캡처 그룹 2를 사용에서 콜백 함수)

+0

나는 그것이 .replaceFirst()로 작업하기를 원했어야했다. – makc

+0

@makc : 제 편집을 한번보세요. –

+0

err ... wait, 작동하지 않습니다. 마지막 코멘트를 죽였다. – makc

관련 문제