Regex no funciona en String.matches()
Tengo este pequeño fragmento de código.
String[] words = {"{apf","hum_","dkoe","12f"};
for(String s:words)
{
if(s.matches("[a-z]"))
{
System.out.println(s);
}
}
Se supone que debe imprimir
dkoe
pero no imprime nada!!
Bienvenido al método mal llamado de Java .matches()
... Intenta y hace coincidir TODA la entrada. Desafortunadamente, otros idiomas han seguido su ejemplo :(
Si desea ver si la expresión regular coincide con un texto de entrada, use a Pattern
, a Matcher
y el .find()
método del comparador:
Pattern p = Pattern.compile("[a-z]");
Matcher m = p.matcher(inputstring);
if (m.find())
// match
Si lo que quieres es ver si una entrada solo tiene letras minúsculas, puedes usar .matches()
, pero necesitas hacer coincidir uno o más caracteres: agrega a +
a tu clase de caracteres, como en [a-z]+
. O usar ^[a-z]+$
y .find()
.
[a-z]
coincide con un solo carácter entre a y z. Entonces, si su cadena fuera solo "d"
, por ejemplo, entonces habría coincidido y se habría impreso.
Debe cambiar su expresión regular para [a-z]+
que coincida con uno o más caracteres.