SCJP6 problema di regex

Ho un problema con il seguente esempio:

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

E la riga di comando:

 java Regex2 "\d*" ab34ef 

Qualcuno può spiegarmi, perché il risultato è: 01234456

regex pattern è d * – significa numero uno o più ma ci sono più posizioni che in args [1],

Grazie

\d* corrisponde a 0 o più cifre. Quindi, abbinerà persino una stringa vuota prima di ogni carattere e dopo l’ultimo carattere. Prima prima dell’indice 0 , quindi prima dell’indice 1 e così via.

Quindi, per la stringa ab34ef , corrisponde ai seguenti gruppi:

 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) 

Se usi \\d+ , otterrai un solo gruppo a 34 .