正则表达式:某些组缺失

Art*_*syn 3 java regex

我有以下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都不见了(我希望在群体中找到它们).

aio*_*obe 5

重复的组将包含与该组的表达式匹配的最后一个子字符串的匹配.

如果正则表达式引擎会返回匹配组的所有子串,那将是很好的.不幸的是,这不受支持:

此外,组是静态的,编号如下:

                    0
          _______________________
         /                       \
         (PROD)|(SUM)(\\s+(\\d+))+
         \____/ \___/|    \____/| 
           1      2  |       4  |
                      \________/ 
                           3  
Run Code Online (Sandbox Code Playgroud)