java - 正则表达式 : some groups missing

标签 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));
}

产生:

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/

相关文章:

mysql - puppet :file_line 评估 os.path.join

regex - 如何使用 sed 将方括号内的所有空格替换为下划线?

java - CalendarView 的 setOnDateChangeListener 不起作用

java - Java 处理类型类参数的方式

java - 为什么 eclipse 调试器使用 localhost 进行调试?

android - 从 html 字符串中删除多余的 "a href"标签

java - 使用 Java BigDecimal 仍然不能正确解决

java - 拆分字符串保留所有尾随的空元素

java - 正则表达式按分隔符分割,排除转义符并保留空字符串

java 。常用表达。如何将 NOT 与 AND 混合使用?