Regex Java que casa com a maior string

19/03/2019

8

Rodo o seguinte código:

Pattern padraoCor = Pattern.compile("(black|black type)");
Matcher matcherCor = padraoCor.matcher("black type");

if (matcherCor.find()) {
System.out.println(matcherCor.group(0));
} else {
System.out.println("Nao encontrou.");
}


e ele retorna: black

como faço pare ele retornar black tipye?

Desde já muito Obrigado.
Responder

Posts

19/03/2019

William

Ahh, não pode colocar o $ da seguinte forma "(black$|black type$)" por que não é final de string.
Responder

20/03/2019

Marcio Souza

Olá. No compile() você incluí o que está buscando e no matcher() é o texto fonte.
Pattern pattern = Pattern.compile("(black type)");

Matcher matcher = pattern.matcher("black green black white black type");

if (matcher.find()) {
     System.out.println(matcher.group(0));
 } else {
     System.out.println("Nao encontrou.");
 }

Dê uma olhada nesse tutorial - http://tutorials.jenkov.com/java-regex/matcher.html - é muito bom. Tem alguns outros que podem te dar umas dicas:
- https://www.devmedia.com.br/introducao-a-regex/15597
- https://www.tutorialspoint.com/javaregex/javaregex_pattern_matcher.htm
Responder

21/03/2019

William

Resolvi aqui, como ele casa com a primeira string que encontrar declarada no regex ordenei meu array para que o Pattern ficasse da seguinte forma:

Pattern padraoCor = Pattern.compile("(black type|black)");

assim ele só casa com black se não encontra o black type.

Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira