Expressão regular - quantificador ganancioso [duplicado]

Esta pergunta já tem uma resposta aqui:

Problema de regex SCJP6 1 resposta

Estou realmente lutando com esta pergunta:

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

Quando o programa acima é executado com o seguinte comando:

java Regex2 "\d*" ab34ef 

Ele produz01234456. Eu realmente não entendo essa saída. Considere os seguintes índices para cada um dos caracteres:

a b 3 4 e f
^ ^ ^ ^ ^ ^
0 1 2 3 4 5

A saída não deveria ter sido0123445?

Eu tenho lido e parece que o mecanismo RegEx também lerá o final da string, mas eu simplesmente não entendo. Gostaria de saber se alguém pode fornecer um guia passo a passo sobre como está obtendo esse resultado. ou seja, como está localizando cada um dos números.

questionAnswers(1)

yourAnswerToTheQuestion