2013-01-19 2 views
0

일치 이것은 내 문자열입니다 끈. 그러나 나는 마지막 그룹을 얻을 수 없다. 항상 null입니다. 나는 또한이 http://www.regexplanet.com/advanced/java/index.html을 테스트했고 마지막 그룹이없는 동일한 결과를 얻었다.나는 자바 정규식에 마지막 그룹을 얻을 수

제 패턴을 잘못 말하면 알려주세요.

UPDATE :

01-20 01:32:23.013: I/System.out(11368): group 0 : Kết quả xổ số đài  Bình Phước ngày 05/01/2013 Tên Giải Bình Phước - Ký hiệu: bp-05-01 Giải tám 08 Giải bảy 028 Giải sáu 3137-1907-5049 Giải năm 2026 Giải tư 25982-96941-33495-24133-42882-60030-16818 Giải ba 15685-66788 Giải nhì 20283 Giải nhất 46475 Giải đặc biệt 207984 
01-20 01:32:23.013: I/System.out(11368): group 1 : Giải tám 08 
01-20 01:32:23.014: I/System.out(11368): group 2 : 08 
01-20 01:32:23.014: I/System.out(11368): group 3 : 028 
01-20 01:32:23.015: I/System.out(11368): group 4 : 3137-1907-5049 
01-20 01:32:23.015: I/System.out(11368): group 5 : 2026 
01-20 01:32:23.015: I/System.out(11368): group 6 : 25982-96941-33495-24133-42882-60030-16818 
01-20 01:32:23.015: I/System.out(11368): group 7 : 15685-66788 
01-20 01:32:23.016: I/System.out(11368): group 8 : 20283 
01-20 01:32:23.016: I/System.out(11368): group 9 : 46475 
01-20 01:32:23.017: I/System.out(11368): group 10 : 

감사 : 출력은 아래와 같이 10 그룹이있다.

+1

입력 문자열에 11 _groups_ 개의 숫자가 있습니다. 그 입력으로부터 얻으려는 결과를 게시 할 수 있습니까? – jlordo

+0

내 업데이트를 참조하십시오. matcher.groupCount()는 10을 반환하므로 10 개의 그룹이 있다는 것을 알았습니다. 당신은 문자열과 패턴을 http://www.regexplanet.com/advanced/java/index.html에서 복사 할 수 있습니다. –

+0

'groupCount()'는 일치하는 그룹 수가 아닌 정규 표현식에서 그룹 수를 반환합니다 입력에서 [JavaDoc] (http://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html#groupCount())를 참조하십시오. – jlordo

답변

1

마지막으로 일치하는 그룹에서 ? 퀀 타이퍼를 제거하십시오. 모든 와일드 카드 표현식은 꺼려하므로 문자열의 모든 문자를 소비하지는 않습니다. 이상이 적어도이면 하나의 욕심 많은 표현이 마지막 그룹이 일치하도록합니다.

.*?(Giải tám([\\s\\d-]*?))?Giải bảy([\\s\\d-]*?)Giải sáu([\\s\\d-]*?)Giải năm([\\s\\d-]*?)Giải tư([\\s\\d-]*?)Giải ba([\\s\\d-]*?)Giải nhì([\\s\\d-]*?)Giải nhất([\\s\\d-]*?)Giải đặc biệt([\\s\\d]*).*? 
+0

마지막으로 일치하는 그룹에서 '?'를 제거하면 작동합니다. 그러나 나는 왜 그런지 이해하지 못한다. 설명 좀 해줄 수 있니? –

+0

모든 와일드 카드는 꺼립니다. 업데이트를 참조하십시오. – Reimeus

+0

감사합니다. Reimeus. 어떤 때는 패턴이 작동하지 않습니다. 예를 들어, pattern.matcher()를 호출하면 null이 반환됩니다. sáu 2539-0547-6344 지중해 7683 지중해 23848-57813-08826-84383-24408-72615-01193 지중해 바 08351-33404 지사 67609 지중해 54217 Đặc biệt 281753'. 나는 또한 이것을 온라인 정규식 테스트 도구 (http://www.regexplanet.com/advanced/java/index.html)로 테스트한다. 도구는 matches() 및 find()에 대해 NO를 반환합니다. 도와주세요, 제발. –

관련 문제