2010-12-10 23 views
14

Fondamentalement, ma question est ce, pourquoi:Regex pour la méthode String.matches de java?

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

retour faux? (Développé en java1.6)

Fondamentalement, je veux voir si une chaîne passée à moi a des caractères alpha.

Répondre

22

La fonction String.matches() correspond à l'expression régulière contre la chaîne entière (comme si votre regex avait ^ au début et à la fin $). Si vous souhaitez rechercher une expression régulière quelque part dans une chaîne, utilisez Matcher.find().

La bonne méthode dépend de ce que vous voulez faire:

  1. Vérifiez si votre chaîne d'entrée se compose entièrement de caractères alphabétiques (String.matches() avec [a-z]+)
  2. Vérifiez si votre chaîne d'entrée contient tout caractère alphabétique (et peut-être quelques autres) (Matcher.find() avec [a-z])
4

Votre code vérifie si le mot correspond à un caractère. Ce que vous voulez vérifier est si le mot correspond à un nombre de caractères alphabétiques comme ce qui suit:

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

Je n'ai jamais vu le symbole + dans aucun des exemples précédents. Le Java n'a pas aimé que j'utilise * pour une raison quelconque, mais + travaille. Merci. – sMaN

+1

@Shaun, le '+' signifie 1 ou plus de l'élément précédent. – jjnguy

+0

@ Shaun83 - Les expressions rationnelles Java/Java n'auront aucun problème avec un '*' au lieu de '+ 'non plus. Peut-être que vous êtes en train de le perdre ... :-) –

1

avec [a-z] vous mathématiques pour le caractère ONE.

Qu'est-ce que vous cherchez probablement est [a-z]*