这是我的字符串:
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 :
感谢。
答案 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]*).*?