Boa tarde galera!
Estou com dúvida quanto ao que o quantificador * (Zero ou mais ocorrências) e ? (Zero ou uma ocorrência) retornam:
Visto que esse trecho de código:
public static void main(String[] args) {
Pattern p = Pattern.compile("\\d*"); // 0 ou mais digitos seguidos.
Matcher m = p.matcher("1 a12 234b"); //0 1 3 1 2 6 2 3 4
while(m.find()) {
System.out.print(m.start() + " ");
}
}
Retorna esses valores : 0 1 2 3 5 6 9 10 não sei o que esses representam - índice/grupo ? grupo/índice?
E o quantificador de “zero ou uma ocorrencia” (?):
public static void main(String[] args) {
Pattern p = Pattern.compile("\\d?"); // 0 ou mais digitos seguidos.
Matcher m = p.matcher("1 a12 234b"); //0 1 3 1 2 6 2 3 4
while(m.find()) {
System.out.print(m.start() + " ");
}
}
Retorna os índices: 0 1 2 3 4 5 6 7 8 9 10 - porque ? Não é zero ou uma ocorrência ?
Quanto ao quantificador de “uma ou mais ocorrências” (+) está tranquilo:
public static void main(String[] args) {
Pattern p = Pattern.compile("\\d+"); // 0 ou mais digitos seguidos.
Matcher m = p.matcher("1 a12 234b"); //0 1 3 1 2 6 2 3 4
while(m.find()) {
System.out.print(m.start() + " ");
}
}
Retorna os índices: 0 3 6 - pois é ai que os números começam.
Grato a todos que ajudarem.