在java中使用regex进行模式搜索

在java中使用regex进行模式搜索,java,regex,pattern-matching,matcher,Java,Regex,Pattern Matching,Matcher,当我使用案例1时,输出是024。但是,当我使用案例2时,输出是1,但我预期是13。那么,请大家解释一下,regex中是否存在导致此输出的异常规则。那么,我为什么得到这个输出 谢谢你的帮助 注意:案例1和案例2是独立使用的 匹配使用输入,因此在上一个匹配结束后会找到下一个匹配: “bab”匹配器指针在每次匹配前的位置为: |阿巴巴 abab|aba 对于案例2: 因为它在搜索“ BAB < /代码>之后,它不会考虑已经搜索过的字符(在这种情况下,在索引3中),因此只能得到1。 public sta

当我使用案例1时,输出是024。但是,当我使用案例2时,输出是1,但我预期是13。那么,请大家解释一下,
regex
中是否存在导致此输出的异常规则。那么,我为什么得到这个输出

谢谢你的帮助

注意:案例1和案例2是独立使用的

匹配使用输入,因此在上一个匹配结束后会找到下一个匹配:

“bab”匹配器指针在每次匹配前的位置为:

  • |阿巴巴
  • abab|aba
  • 对于案例2:

    因为它在搜索“<代码> BAB < /代码>之后,它不会考虑已经搜索过的字符(在这种情况下,在索引3中),因此只能得到1。

    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());
        }
    }
    
    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)