2012-01-13 6 views
3
Pattern pattern = Pattern.compile("<a>([a-zA-Z]+)</a>") 
Matcher matcher = pattern.matcher("<a>Text</a>"); 
matcher.find() 
String str = matcher.group(); 

내가 str에하는 "Text"를 얻을 싶지만 "<a>Text</a>"를 얻을. 왜 그리고 어떻게해야합니까?자바 정규 표현식 - "()"괄호

+5

아, 금요일 경주. –

답변

5

matcher.group()은 인수없이 일치하는 부분 문자열 전체를 반환합니다. 첫 번째 괄호 캡처 그룹의 내용 만 검색 할 수 matcher.group(1)를 사용

당신이 경우 그룹, 하나의 인덱스를 지정해야합니다
Pattern pattern = Pattern.compile("<a>([a-zA-Z]+)</a>") 
Matcher matcher = pattern.matcher("<a>Text</a>"); 
matcher.find(); 
String str = matcher.group(1); 
2

matcher에서 group()의 또 다른 오버로드입니다. 시도 :

matcher.group(1); 
2

원하는 사용자 : group(1); 첫 번째 그룹은 전체 패턴입니다.

group()group(int) 문서를 참조하십시오.

2

group()은 일치하는 전체 텍스트를 반환합니다. group(1)을 원하면 괄호 안에서 첫 번째 쉼표로 구분 된 그룹을 반환합니다. API docs을 참조하십시오.

2

당신은 캡처 그룹 번호와 함께 matcher.group을 호출해야합니다 - 인수를 생략하면 전체 일치가 반환됩니다.

안부, 카슨

PS : 최고의 주소를 신속하게 질문의 이러한 종류를 해결하기는 java api docs의 repective 부분을 보는 것입니다.