public static void main(String args[]) {
Pattern p = Pattern.compile("ab"); // Case 1
Pattern p = Pattern.compile("bab"); // Case 2
Matcher m = p.matcher("abababa");
while(m.find()){
System.out.print(m.start());
}
}
当我使用案例1 时,按预期输出 024 。但是,当我使用案例2 时,输出 1 ,但我预计 13 。所以,任何人都解释一下,regex
中是否存在任何例外规则,如果不是,则导致此输出。那么,为什么我得到这个输出。
帮助赞赏!!
注意:案例1和案例2是独立使用的。
答案 0 :(得分:2)
匹配消耗输入,因此在上一场比赛结束后找到下一场比赛:
每场比赛前“bab”匹配器指针的位置为:
|abababa
abab|aba
答案 1 :(得分:0)
案例2:
因为,在搜索bab
之后,它不会考虑已经搜索过的字符(在这种情况下,b在索引3处),因此只得到1。
Input: abababa
Search for bab,
find's a match starting at index 1 and ending at index 3, next the search would start at index 4(aba)