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

这是我的模式:

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

谢谢。

4

1 回答 1

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]*).*?
于 2013-01-19T18:31:56.740 回答