2011-01-07 9 views
6

특정 태그 내에서 텍스트를 가져 오려고합니다. 그래서 만약 내가 가진 :HTML 앵커 (<a> ...</a>) 태그에서 텍스트를 가져 오는 Java Regex 태그

<a href="http://something.com">Found<a/> 

내가 Found 텍스트를 검색 할 수 있어야합니다.

나는 정규식을 사용하여 그것을 시도하고있다. 나는 <a href="http://something.com>가 동일하게 머물러 있지만 그렇게하지 않으면 할 수 있습니다. ([a-zA-Z0-9 ]*)</a>.* - -

Pattern titleFinder = Pattern.compile(".*[a-zA-Z0-9 ]* ([a-zA-Z0-9 ]*)</a>.*"); 

내가 마지막 두 부분으로 생각 확인하지만 나는 첫 번째 부분에 대해 무엇을 해야할지하지 않습니다

지금까지 나는이 있습니다.

+8

[정규식을 사용하여 HTML을 구문 분석하지 마십시오.] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454). 적절한 XML/HTML 파서를 사용하십시오 ... – ircmaxell

+0

답장을 보내 주셔서 감사합니다, 아픈 표정으로 = D하지만 15 회 발생하는이 태그에 대해서만 HTML 태그를 많이 사용하지 않습니다 ... 여전히 나쁘다는 것입니다. ? – BeginnerPro

+0

자바의 정규식은 HTML을 구문 분석 할만큼 강력하지 않습니다. 그러나 다른 언어들도 그렇습니다. 왜 올바른 생각을 가진 사람이라면 자바를 정규 표현식으로 사용하는 것이 저를 넘어서는 것입니다. – tchrist

답변

6

. 당신이 단점을 알고 있다면, 당신은 그걸로 도망 갈 수 있습니다. 시도해보십시오.

Pattern titleFinder = Pattern.compile("<a[^>]*>(.*?)</a>", Pattern.DOTALL | Pattern.CASE_INSENSITIVE); 
Matcher regexMatcher = titleFinder.matcher(subjectString); 
while (regexMatcher.find()) { 
    // matched text: regexMatcher.group(1) 
} 

문자열의 모든 일치를 반복합니다.

중첩 된 <a> 태그를 처리하지 않고 태그 안의 모든 속성을 무시합니다.

관련 문제