Não consigo entender a saída do código abaixo:
public class TesteRegex {
public static void main(String[] args){
Pattern expressao = Pattern.compile("\\d*");
Matcher fonte = expressao.matcher("ab34ef");
System.out.println(expressao.pattern());
int i=1;
while(fonte.find()){
System.out.println(i++ + "º vez");
System.out.println("Posição: " + fonte.start() + " Correspondencia: " + fonte.group());
}
}
}
Saída:
\d*
1º vez
Posição: 0 Correspondencia:
2º vez
Posição: 1 Correspondencia:
3º vez
Posição: 2 Correspondencia: 34
4º vez
Posição: 4 Correspondencia:
5º vez
Posição: 5 Correspondencia:
6º vez
Posição: 6 Correspondencia:
Alguem consegue me explicar a lógica dessa saída?
Como o método start() retorna o valor 6, se os índices da fonte vão de 0 a 5 ? Porque o While é executado 6 vezes?
Porque após encontrar a correspondência 34 na posição 2, ele pula para o índice 4 ?
Obrigado galera