2013-03-28 3 views
3

다른 유형의 HTML 태그 사이에서 텍스트를 추출해야하는 정규 표현식을 찾고 있습니다. 스팬 1RegEx : HTML 태그 사이에서 텍스트를 추출합니다.

<div onclick="callMe()">Span 2</div> - O/P : 스팬 2

<a href="#">HyperText</a> - O/P : 하이퍼

- O/P

<span>Span 1</span> : 예를 들어

이 특정 조각을 발견했습니다. <([A-Z][A-Z0-9]*)\b[^>]*>(.*?)</\1> m here하지만 이건 작동하지 않습니다.

+1

정확히 작동하지 않는 방법을 명시하십시오. – MikeM

+3

나는이 질문에 대한 전설적인 최고 대답을 소개하고자한다 : http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – Philipp

+0

@MikeM is it 작동하지 않는다는 뜻입니다. 원하는 결과를주지 못합니다. 그것은 대신 전체 HTML 태그를 보여주는 콘텐츠를 추출하지 못했습니다 – Sriram

답변

7

귀하의 의견에 따르면 정규식 문자열에서 백 슬래시를 벗어나는 것을 게을리했습니다.

그리고 당신은 태그 내용이 줄 바꿈을 포함 할 수있는 경우 소문자가

"<([A-Za-z][A-Za-z0-9]*)\\b[^>]*>(.*?)</\\1>" 

(정규식의 시작 부분에 (?i) 또는 추가) 문자 클래스에 a-z을 추가하거나 Pattern.CASE_INSENSITIVE을 사용하여 일치 할 경우, 다음 Pattern.DOTALL를 사용 또는 도트/싱글 라인 모드를 켜려면 (?s)을 정규식 시작 부분에 추가하십시오.

+0

감사합니다. 네, 표현식에 백 슬래시를 추가하지 않았습니다. 그 표현식에서 재귀 적으로 html 태그를 확인하고 궁극적으로이 태그들 사이에 텍스트를 가져 오는 옵션이 하나 더 필요합니다. ** 예 : **'테스트 '이번에는 매우 분명합니다. – Sriram

+0

오! 아래쪽 투표가 있습니다 : ( – Sriram

+0

@Sriram. 내부 태그를 얻으려면 위의 정규 표현식을 루프에서 사용해야하지만, 새로운 질문을하는 것이 좋습니다. – MikeM

-1

아주 특정한 방법 :

(<span>|<a href="#">|<div onclick="callMe\(\)">)(.*)(</span>|</a>|</div>) 

하지만 그래,이 만 3 개 예제를 작동합니다. HTML 파서를 사용해야합니다.

+0

몇 가지 솔루션을 제공 받기 위해 잠시 기다리에는 시계가없는 아래의 태그 사이의 내용을 가져 오지 드릴 수 없습니다. 말할 수 없다 – Sriram

1

이 사용자의 요구에 맞게해야합니다

<([a-zA-Z]+).*?>(.*?)</\\1> 

첫 번째 그룹은 태그 이름, 값 inbetween 두 번째가 포함되어 있습니다.

+0

다중 태그가있는 경우 reg 표현식이 유효하지 않습니다. – varpekv

관련 문제