我有以下 Java 代码:
String s2 = "SUM 12 32 42";
Pattern pat1 = Pattern.compile("(PROD)|(SUM)(\\s+(\\d+))+");
Matcher m = pat1.matcher(s2);
System.out.println(m.matches());
System.out.println(m.groupCount());
for (int i = 1; i <= m.groupCount(); ++i) {
System.out.println(m.group(i));
}
产生:
true
4
null
SUM
42
42
我想知道什么是 null
以及为什么缺少 12 和 32(我希望在组中找到它们)。
最佳答案
重复的组将包含与该组的表达式相匹配的最后 子字符串的匹配项。
如果正则表达式引擎返回匹配组的 所有 子串就好了。不幸的是,这不受支持:
此外,组是静态的,编号如下:
0
_______________________
/ \
(PROD)|(SUM)(\\s+(\\d+))+
\____/ \___/| \____/|
1 2 | 4 |
\________/
3
关于java - 正则表达式 : some groups missing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7991190/