Matcher.find() 如何工作
我正在测试匹配器和模式类的一个小存根...请参阅以下小存根。
package scjp2.escape.sequence.examples;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Sample_19 {
public static void main(String a[]){
String stream = "ab34ef";
Pattern pattern = Pattern.compile("\\d*");
//HERE * IS GREEDY QUANTIFIER THAT LOOKS FOR ZERO TO MANY COMBINATION THAT
//START WITH NUMBER
Matcher matcher = pattern.matcher(stream);
while(matcher.find()){
System.out.print(matcher.start()+matcher.group());
}
}
}
这里。。。我们正在比较的字符串是“ab34ef”。长度为6。
诺伊让我们看看迭代...
Iteration NO matcher.start() matcher.group()
1 0 ""
2 1 ""
3 2 34
4 4 ""
5 5 ""
现在。。让我们结合...matcher.start() + matcher.group()....根据我们的计算,输出是:0123445
但是,存根会生成01234456。
我无法理解“6”从何而来。字符串索引从零开始,所以这里可以有最大索引是 5.So 从哪里来的6?
它循环访问六次。如何?有什么建议吗?