0
respostas

[Dúvida] matcher.find() ou matcher.matches()?

Estou em duvida em relação aos metodos .find() e . matches() da classe Matcher.
Não entendi muito bem a diferença edles e qual escolher para usar neste exercicio.

Eu testei os dois, deixei um comentado e rodei o programa, depois comentei o outro e rodei novamente.


package referencia.de.codigo.validando;

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ValidandoReferenciaDeCodigo {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        System.out.println("Insira o codigo: ");
        String codigo = sc.nextLine();

        Pattern pattern = Pattern.compile("^[A-Z]{3}-\\d{4}$");
        Matcher matcher = pattern.matcher(codigo);

//        boolean valida = matcher.find();

//        if(!valida){
        if(!matcher.matches()){
            System.out.println("Código inválido.");
        }else {
            System.out.println("Código válido.");
        }

        sc.close();
    }
}