Algo estranho no matches ?[RESOLVIDO]

3 respostas
dicabeca

pessoal olha so,esta acontecendo algo muito estranho no metodo matches,eu leio um arquivo texto,ate ai blz,a expressão regular esta certa,mesmo assim me retorna false e nao sei pq?

//vals[2].substring(0,2) me retorna "RO",a expressao regular esta certa e mesmo assim me retorna false

   vals[2].substring(0,2).matches("[A-Z]");

3 Respostas

gomesrod

Talvez eu esteja enganado em algum detalhe, mas o que ocorre é o seguinte:

O método “matches” verifica se a Expressão Regular casa perfeitamente com sua palavra. Se combinar com uma parte dela apenas, não importa, retorna falso.

Assim:
Sua palavra é RO.
A ER é “[A-Z]”, ou seja, UM caracter de A a Z.

Não importa se “UM caracter de A a Z” pode ser encontrado dentro da palavra RO. Interessa é se a palavra inteira combina com a máscara, sem sobrar nem faltar.

Você tem duas alternativas para que a comparação funcione:

  1. mudar a expressão para “[A-Z][A-Z]” (dois caracteres). Essa máscara combina com a palavra RO.

ou

  1. Usar o método find() da classe Matcher para ver se uma correspondência pode ser encontrada em qualquer lugar da palavra.

java.util.regex.Pattern p = java.util.regex.Pattern.compile("[A-Z]"); java.util.regex.Matcher m = p.matcher("RO"); System.out.println(m.matches()); // Essa mostra FALSE - A correspondencia não é exata. System.out.println(m.find()); // Aqui mostra TRUE - A expressão existe em parte da palavra

dicabeca

gomesrod obrigado ai pela ajuda,mais minha expressao nao esta de todo jeito certo,como vc mesmo disse ele so pega UM LETRA,entao minha solucao foi vals[2].substring(0,2).matches("[A-Z]+");

gomesrod

Como diria o Chapolin… “é exatamente o que eu ia dizer” :wink:

Criado 15 de julho de 2008
Ultima resposta 15 de jul. de 2008
Respostas 3
Participantes 2