SCJP6正则表达式问题

我有以下例子的问题:

import java.util.regex.*;
class Regex2 {
    public static void main(String[] args) {
        Pattern p = Pattern.compile(args[0]);
        Matcher m = p.matcher(args[1]);
        boolean b = false;
        while(b = m.find()) {
            System.out.print(m.start() + m.group());
        }
    }
}

和命令行:

java Regex2 "d*" ab34ef

有人可以解释我,为什么结果是:01234456

正则表达式模式是d * - 它意味着第一或更多,但是在args [1]中有更多的位置,

谢谢


d*匹配0个或多个数字。 因此,它甚至会在每个字符之前和最后一个字符之后匹配空字符串。 首先在索引0之前,然后在索引1之前,依此类推。

所以,对于字符串ab34ef ,它匹配以下组:

Index    Group
  0        ""  (Before a)
  1        ""  (Before b)
  2        34  (Matches more than 0 digits this time)
  4        ""  (Before `e` at index 4)
  5        ""  (Before f)
  6        ""  (At the end, after f)

如果你使用d+ ,那么你将在34得到一个组。

链接地址: http://www.djcxy.com/p/76925.html

上一篇: SCJP6 regex issue

下一篇: My regex is matching too much. How do I make it stop?