Olá galera,
Minha dúvida é nesse código:
[code]public class Regex3 {
public static void main(String… args) {
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaaaabc");
boolean b = m.matches();
//m.reset();
boolean b1 = m.find();
System.out.println(b + " " + b1 + " " + m.group());
}
}[/code]
A saída é:
false true b
Mas se eu descomento a linha m.reset(); a saída muda para:
false true aaaaaaab
Não entendi direito porque a saída é alterada se eu reseto o Matcher. Parece que quando a linha está comentada o texto começa ser avaliado a partir da letra “b” deixando de lado as letras “a” que passaram, é isso mesmo? Porque?
Na documentação fala que o find começa a verificar do começo do texto em diante ou a partir do primeiro carácter que não casou com ninguém anteriormente se o find tiver sido executado antes com sucesso:
http://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/Matcher.html#find()
“This method starts at the beginning of the input sequence or, if a previous invocation of the method was successful and the matcher has not since been reset, at the first character not matched by the previous match.”
Não sei se esse trecho da documentação tem a ver com a minha dúvida ou se ajuda vocês a esclarecem para mim as diferentes saídas.
Obrigado.