2010-12-10 29 views
14

Básicamente mi pregunta es la siguiente, ¿por qué es:Regex para el método String.matches de java?

String word = "unauthenticated"; 
word.matches("[a-z]"); 

volviendo falsa? (Desarrollado en java1.6)

Básicamente, quiero ver si una secuencia que se pasa a mí tiene caracteres alfa en ella.

Respuesta

22

La función String.matches() partidos su expresión regular contra el conjunto cadena (como si su expresión regular tenía ^ al principio y al final $). Si desea buscar una expresión regular en algún lugar dentro de una cadena, use Matcher.find().

El método correcto depende de lo que desea hacer:

  1. Compruebe si la cadena de entrada consiste totalmente de caracteres alfabéticos (String.matches() con [a-z]+)
  2. Comprobar para ver si su cadena de entrada contiene cualquier carácter alfabético (y quizás algunos otros) (Matcher.find() con [a-z])
4

Su código está comprobando si la palabra coincide con un carácter. Lo que se quiere comprobar es si la palabra coincide con cualquier número de caracteres alfabéticos como el siguiente:

word.matches("[a-z]+"); 
+0

Nunca vi el símbolo + en ningún ejemplo antes. A la java no le gustó usar * por alguna razón, pero + está funcionando. Gracias. – sMaN

+1

@Shaun, el '+' significa 1 o más elemento anterior. – jjnguy

+0

@ Shaun83 - Las expresiones regulares Java/Java no tendrán problemas con un '*' en lugar de '+' tampoco. Tal vez lo ESTÁS perdiendo ... :-) –

1

con [a-z] que matemáticas para un carácter.

Lo que probablemente estás buscando es [a-z]*