SCJP6正则expression式问题

我有以下例子的问题:

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

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

谢谢

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

所以,对于stringab34ef ,它匹配下列组:

 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获得一个组。