dúvida Regex \d*

bom dia comunidade… estou com um problema, executo o seguinte código:

// "\d" procura por dígitos numéricos Pattern p = Pattern.compile("\\d*"); // 0 ou mais, não 1 Matcher m = p.matcher("012345"); boolean b = false; while (b = m.find()) { System.out.print(m.start()); } }

e recebo a saída: 06

da onde vem esse 6? tem algo relacionado a eu estar executando com o compilador 1.6?

se altero pra:

recebo como saída: 0346
034 tudo bem, mas de onde vem o maldito 6?

Interessante, é pq na posição 6 ele encontrou ZERO ocorrencia

		Pattern p = Pattern.compile("\\d*");  // 0 ou mais, não 1  
		Matcher m = p.matcher("012345a3");  
		while (m.find()) {  
		    System.out.print(m.start());      
		}  
		//saida 0678

Veja a diferença, troque por Pattern p = Pattern.compile("\d+"); // uma ou mais

[quote=asousaj]Interessante, é pq na posição 6 ele encontrou ZERO ocorrencia

		Pattern p = Pattern.compile("\\d*");  // 0 ou mais, não 1  
		Matcher m = p.matcher("012345a3");  
		while (m.find()) {  
		    System.out.print(m.start());      
		}  
		//saida 0678

Veja a diferença, troque por Pattern p = Pattern.compile("\d+"); // uma ou mais[/quote]

não entendi direito, achava que não existisse posição 6 (no meu exemplo), no seu exemplo apareceu a posição 8, ela existe? se sim como? de onde ela vem?

—fonte: 012345a3
posição: 01234567 (8?)

com \d+ fica tudo tranquilo, nada de posições misteriosas

abrigado pela ajuda.

Quanto ao seu primeiro questionamento, ele avalia quantas ocorrências têm, começando na posição 0 e terminando na 6, o segundo questionamento mostra isso tambem, começa no 0 e termina no 6, na 7 não encontrou e terminou na 8, para que vc entenda melhor o indice sempre começa em 0.

espero ter ajudado.