Java正则表达式模式

Java正则表达式模式

This question already has an answer here:
SCJP6 regex issue
                                
                                    (1个答案)
                                
                        
                                4年前关闭。
            
                    
只是有关Java正则表达式模式的一个简短问题!所以说,如果我有一个类似的方法。

    public void example()
    {
      Pattern p = Pattern.compile("\\d*");
      Matcher m = p.matcher("ab34ef");
      boolean b = false;
      while (b = m.find())
      {
        System.out.println(m.start() + " " + m.group());
      }
    }


如果运行此命令,则最终将得到以下输出。

     0
     1
     2 34
     4
     5
     6


我知道它的工作原理是如何在6点结束,我认为它将在5点结束,有人可以向我解释一下吗?谢谢!

最佳答案

在字符串"ab34ef"中,有7个“空字符”,其值为""。它们位于每个普通字符之间。它尝试查找从每个空字符开始的匹配项,而不是从每个正常字符开始的匹配项;即每个|在以下位置:"|a|b|3|4|e|f|"

07-24 14:42