我无法获得Java Regex匹配的最后一组

时间:2013-01-19 18:26:16

标签: java regex

这是我的字符串:

 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

这是我的模式:

.*?(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]*?).*?

我尝试从字符串中获取10组数字。但我无法得到最后一组。它始终为空。我也测试了这个http://www.regexplanet.com/advanced/java/index.html,我得到了相同的结果,没有最后一组。

请告诉我我的模式在哪里错了。

更新:输出有10组如下:

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 : 

感谢。

1 个答案:

答案 0 :(得分: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]*).*?