SCJP6 problema de expresiones regulares

Tengo problemas con el siguiente ejemplo:

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

Y la línea de comando:

 java Regex2 "\d*" ab34ef 

¿Puede alguien explicarme por qué el resultado es 01234456?

el patrón regex es d * – significa número uno o más, pero hay más posiciones que en args [1],

Gracias

\d* coincide con 0 o más dígitos. Por lo tanto, incluso coincidirá con una cadena vacía antes de cada carácter y después del último carácter. Primero antes del índice 0 , luego antes del índice 1 , y así sucesivamente.

Por lo tanto, para la cadena ab34ef , coincide con los siguientes grupos:

 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) 

Si usa \\d+ , obtendrá un solo grupo en 34 .