Java 正则表达式和捕获括号

Java 正则表达式和捕获括号,java,regex,parentheses,capturing-group,Java,Regex,Parentheses,Capturing Group,我试图理解如何捕捉括号工作的正则表达式,但我不明白 我的代码是: 我得到了预期的结果:ab 然后我想记住并只显示匹配结果的一部分,所以我做到了: 我本以为会有:a,但我有:ab 为什么?摘自: 捕获组从左到右索引,从一开始。组0表示整个模式,因此表达式m.Group(0)等价于m.Group() 问题是组0(即m.group(0))匹配整个模式,而不是括号内的模式。因此,要匹配所需的组,需要从索引1开始,直到组计数结束: for (int i = 1; i <= m.groupCount(

我试图理解如何捕捉括号工作的正则表达式,但我不明白

我的代码是:

我得到了预期的结果:ab

然后我想记住并只显示匹配结果的一部分,所以我做到了:

我本以为会有:a,但我有:ab

为什么?

摘自:

捕获组从左到右索引,从一开始。组0表示整个模式,因此表达式m.Group(0)等价于m.Group()

问题是组0(即
m.group(0)
)匹配整个模式,而不是括号内的模式。因此,要匹配所需的组,需要从索引1开始,直到组计数结束:

for (int i = 1; i <= m.groupCount(); i++) {
    System.out.println(m.group(i));
}

for(int i=1;谢谢你的回答!
   Pattern pattern = Pattern.compile("(ab)");
   Matcher m = pattern.matcher("abc");
   Pattern pattern = Pattern.compile("(a)b");
   Matcher m = pattern.matcher("abc");
for (int i = 1; i <= m.groupCount(); i++) {
    System.out.println(m.group(i));
}