我有以下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));
}
Run Code Online (Sandbox Code Playgroud)
产生:
true
4
null
SUM
42
42
Run Code Online (Sandbox Code Playgroud)
我想知道是什么null,为什么12和32都不见了(我希望在群体中找到它们).
重复的组将包含与该组的表达式匹配的最后一个子字符串的匹配.
如果正则表达式引擎会返回匹配组的所有子串,那将是很好的.不幸的是,这不受支持:
此外,组是静态的,编号如下:
0
_______________________
/ \
(PROD)|(SUM)(\\s+(\\d+))+
\____/ \___/| \____/|
1 2 | 4 |
\________/
3
Run Code Online (Sandbox Code Playgroud)