2011-07-29 4 views
2

나는 그러한 문자열을 가지고 정규식 : 한 종류의 태그 제외한 문자열에서 모든 태그 제거

<p>test <span class=\"match\">match</span> <span class=\"testtes\">dddddd</span></p> 

태그없이 문자열을 얻고 싶습니다. 하지만 클래스 "match"에 의해 강조 표시를 저장하려면 :

test <span class=\"match\">match</span> dddddd 

그냥 모든 태그를 제거하려면 빈 문자열에 의해 regexp /<\/?[^>]*>/ 만족하는 모든 부분 문자열을 대체하십시오. 하지만 특별한 경우에 정규 표현식을 사용해야합니까?

UPD : 알고리즘은 다음과 같습니다. 태그가없는 문장이 있으면이 범위를 제거하지 말아야합니다. 그렇지 않으면 모든 태그를 제거해야합니다.

+2

정규식을 html로 결합하지 마십시오! – hsz

+0

무슨 소리 야? – petRUShka

+1

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – hsz

답변

0

그렇지 않으면 당신은 모든 태그를 제거해야이 여는 태그를 보존 할과 here on Regexr

그러나 방법을 참조하십시오이

test <span class=\"match\">match dddddd 

결과 일치하는 종료 태그를 찾아야합니까?

<p>test <span class=\"match\">match</span> <span class=\"testtes\">dddddd</span></p> 
            ^^^^^^^   or the next one?  ^^^^^^^ 

는 정규식 태그를 폐쇄하면 해당 클래스를 포함하는 개방 <span> 태그에 속한 알 수 없다. 일치하는 종료 태그를 찾을 수있는 가능성이 없습니다. 그래서 정규식을 사용하여 이것을하는 것은 좋은 생각이 아닙니다.

저는 사용중인 언어가이 작업을 수행하는 데 사용할 수있는 HTML 파서를 가지고 있다고 확신합니다.

+0

내가 유한 상태 기계와 같은 것을 실현할 수 있다면, 나는 다음과 같이 쓸 수 있다고 생각했다. 그러한 RegExp. 알고리즘은 다음과 같습니다 :''및 태그가없는 문장이 있고 ''이면이 범위를 제거하면 안됩니다. 그렇지 않으면 모든 태그를 제거해야합니다. – petRUShka