我试过很难理解这一点,但我只是不明白。 我不明白为什么在group()方法返回“34”之后start()方法返回“456”。
Pattern p = Pattern.compile("\\d*");
Matcher m = p.matcher("ab34ef");
while(m.find())
{
System.out.print(m.start()+m.group()); // output: 01234456
}
答案 0 :(得分:1)
你的正则表达式找到0个长度的项目,这会增加很多0长度的匹配。
由于输出全部在1行,我将其拆分以使其更具可读性。
Pattern p = Pattern.compile("\\d*");
Matcher m = p.matcher("ab34ef");
while(m.find()) {
System.out.printf("start:%s end:%s text:'%s'%n", m.start(), m.end(), m.group());
}
输出:
start:0 end:0 text:''
start:1 end:1 text:''
start:2 end:4 text:'34'
start:4 end:4 text:''
start:5 end:5 text:''
start:6 end:6 text:''
这符合您01234456
的输出: