下面这个正则表达式的pattern有两个组,加上默认组应该是三个组,为什么只打印出两组?(\d+)捕获组应该是3000并没有获取到这个捕获组,请问怎么解释?
String string = "This order was placed adefor QT3000! OK?";
String pattern = "(\\D*)(\\d+)";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(string);
while(m.find()){
System.out.println("找到了"+m.groupCount());
for(int i = 0 ; i < m.groupCount(); i++){
System.out.println("Found value:" + m.group(i));
}
}
结果:
找到了2
Found value:This order was placed adefor QT3000
Found value:This order was placed adefor QT
groupCount() 的计数是不包括
group(0)
的,所以你的循环应该写成(条件是<=
)