Java正则表达式模式查询

标签 java regex

关于 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|"

关于Java正则表达式模式查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20955951/

相关文章:

java - 无法使用 Java 将 POST 请求中的 ArrayList 发送到 REST 服务器

ruby - 如何在 ruby​​ 中使用 match?

regex - 尝试提取单元格中特定值之后的单词

java - 未找到 imagePreloader - 使用 FOP 将 XML 转为 PDF

java - 文件删除问题

java - java中的长二进制字符串算术

xQuery 中用于标记化的正则表达式

javascript - 将单词与旁边的空格匹配

java - 从Java中的字符串中提取IP和坐标

java - 如何使用 Java 将查询数据从 Google Cloud Datastore 导出到 csv?