2010-03-10 2 views
2
System.out.println(matcher.group(1)); 
System.out.println(matcher.group()); 

위의 두 코드의 차이점을 알고 싶습니다. 나는 다른 출력을 얻는다. 아무도 이것에 정교 할 수 있니?아래 두 가지의 차이점은 무엇입니까?

이전 경기

그룹 (INT)으로 일치 한 입력 부분 순서를 돌려줍니다

감사

+0

간단한 샘플의 경우 group() 및 group (1)에 대해 정확히 동일한 값을 얻습니다. 특정 표현식과 입력 문자열을 제공 할 수 있습니까? –

답변

8

group()에 통화가 당신에게 유사한 전체 문자열을 제공/개구 괄호 , 1에서 시작).

그래서 예를 들어, 다음과 같은 입력 문자열이 있다면 :

The quick brown fox 

을 그리고 당신은 (따옴표없이) 다음과 같은 정규 표현식에 대해 일치 :

"The (\\w+)" 

그런 다음 group() 당신에게 줄 것이다 "빠르다"와 group(1)는 당신에게 "빠른"것을 줄 것입니다.

Java에서이 정규 표현식이 어떻게 작동하는지에 대한 자세한 내용은 java.util.regex.Matcher JavaDoc을 참조하십시오.

+0

이 정규 표현식에 뭔가가 누락되었습니다. "(\\ w +)'"을 (를) 말하지 않았습니까? (그리고 정확하게 말하면 일치하지 않을 것입니다 -'matches()', 찾을 것입니다 -'find()') –

+0

백 슬래시를 추가하기 위해 업데이트되고'matches()'와'find()'에 대해 여러분이 맞습니다. . –

2

나는 Matcher

그룹()에 대한 JavaDoc을 당신을 가리 킵니다 :

이전 일치 조작 중에 주어진 그룹에서 8 처된 입력 서브 순서를 리턴합니다.

+0

'> ...'을 사용하여 인용문을 인용하십시오. – kennytm

+0

@KennyTM 완료 :-) – karlgrz

1

API doc은 가장 먼저 살펴볼 좋은 장소입니다. group(1) 왼쪽 카운팅하면 첫 번째 괄호 "캡처"그룹 (또는보다 일반적 group(n) 당신에게 n 번째 포착기를 제공한다 있습니다 반면

관련 문제