Expressão regular - quantificador ganancioso [duplicado]
Esta pergunta já tem uma resposta aqui:
Problema de regex SCJP6 1 respostaEstou 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.