各位好...
程序是:
Pattern p = Pattern.compile("\d{3}");
String s = "123-34345-234-12";
Matcher m = p.matcher(s);
System.out.println(m.find());
System.out.println(m.find());
System.out.println(m.find());
System.out.println(m.find());
我想问问find()语句find了之后为什么不是从"-"这个字符开始找.
而是从下个字符,也就是继续从数字开始find,
请大家不要吝啬文墨,谢谢~~
问题补充
补充:
如果说的不够清晰的话,
那么其实我的意思就是:想知道find方法的用法
他在find了之后指向什么位置?
[quote]他在find了之后指向什么位置? [/quote]
如果在字符串中查找到匹配字符序列,则指向这个字符序列的下一个字符位置,下一次find()的开始也是从这里,就是你例子中的-位置。
另外,还有一个find(int start)方法可以手动指定从什么位置开始
[quote]find()语句find了之后为什么不是从"-"这个字符开始找. [/quote]
其实就是从-之后开始找的
find()方法说明是这样的:
[quote]尝试查找与该模式匹配的输入序列的[color=red]下一个[/color]子序列。
此方法从匹配器区域的开头开始,如果该方法的前一次调用成功了并且从那时开始匹配器没有被重置,则从以前匹配操作没有匹配的第一个字符开始。
[/quote]
你的程序可以改成这样把index打印出来看一下:
[code="java"]
Pattern p = Pattern.compile("\d{3}");
String s = "123-34345-234-12";
Matcher m = p.matcher(s);
System.out.println(m.find());
System.out.println(m.start());
System.out.println(m.find());
System.out.println(m.start());
System.out.println(m.find());
System.out.println(m.start());
System.out.println(m.find());
[/code]
输出结果为:
[quote]true
0
true
[color=red]4[/color]
true
10
false[/quote]
通过那个4可以开出,是从第四个字符[color=red]“-”[/color]开始的
jones起来真早呀!! :idea: :arrow: :arrow: :arrow:
java api说的很清楚了"尝试查找与该模式匹配的输入序列的下一个子序列,此方法从匹配器区域的开头开始,如果该方法的前一次调用成功了并且从那时开始匹配器没有被重置,则从以前匹配操作没有匹配的第一个字符开始。
".