Java 正则表达式和捕获括号
我试图理解如何捕捉括号工作的正则表达式,但我不明白 我的代码是: 我得到了预期的结果:ab 然后我想记住并只显示匹配结果的一部分,所以我做到了: 我本以为会有:a,但我有:ab 为什么?摘自: 捕获组从左到右索引,从一开始。组0表示整个模式,因此表达式m.Group(0)等价于m.Group() 问题是组0(即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(
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));
}