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:3Match ended at:4Match started at:17Match ended at:18請求大神講一下17和18是怎么得來的呀
3 回答

皇4
TA貢獻2條經驗 獲得超1個贊
find
public boolean find()
嘗試查找與該模式匹配的輸入序列的下一個子序列。
此方法從匹配器區域的開頭開始,如果該方法的前一次調用成功了并且從那時開始匹配器沒有被重置,則從以前匹配操作沒有匹配的第一個字符開始。
如果匹配成功,則可以通過 start、end 和 group 方法獲取更多信息。
返回:當且僅當輸入序列的子序列匹配此匹配器的模式時才返回 true。
while循環中的find方法第一次調用,輸出了前兩行,接著循環繼續,第二次調用時因為matcher匹配器沒有重置,find方法匹配第二個“b”,所以輸出了第三第四行結果。
添加回答
舉報
0/150
提交
取消