关于m.start(0)和m.end(0)的问题

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Text
{
public static void main (String [] args)
{
Pattern p = Pattern.compile ("b");
Matcher m = p.matcher("hi buddy! How is bill?");
while (m.find ())
{
System.out.println ("Match started at:"+ m.start(0));
System.out.println ("Match ended at:"+m.end(0));
}
}
}

运行结果:

Match started at:3

Match ended at:4

Match started at:17

Match ended at:18

请求大神讲一下17和18是怎么得来的呀

java小学三班
浏览 1453回答 3
3回答

皇4

find public boolean find() 尝试查找与该模式匹配的输入序列的下一个子序列。 此方法从匹配器区域的开头开始,如果该方法的前一次调用成功了并且从那时开始匹配器没有被重置,则从以前匹配操作没有匹配的第一个字符开始。 如果匹配成功,则可以通过 start、end 和 group 方法获取更多信息。 返回:当且仅当输入序列的子序列匹配此匹配器的模式时才返回 true。 while循环中的find方法第一次调用,输出了前两行,接着循环继续,第二次调用时因为matcher匹配器没有重置,find方法匹配第二个“b”,所以输出了第三第四行结果。

蜂之谷

第二个 b 所在的索引?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java