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.