Maison >Java >javaDidacticiel >Pourquoi mon Regex ne fonctionne-t-elle pas dans String.matches() de Java ?
Regex ne fonctionne pas dans String.matches()
Question :
A l'utilisateur a écrit un extrait de code pour faire correspondre les chaînes contenant uniquement des minuscules lettres :
String[] words = {"{apf","hum_","dkoe","12f"}; for(String s:words) { if(s.matches("[a-z]")) { System.out.println(s); } }
Cependant, le code n'imprime rien, même s'il attend "dkoe" comme sortie.
Réponse :
Contraire à son nom, la méthode String.matches() de Java fait correspondre l'intégralité de la chaîne d'entrée à une expression régulière. Pour faire correspondre seulement une partie de la chaîne, utilisez plutôt Pattern et Matcher :
Pattern p = Pattern.compile("[a-z]+"); Matcher m = p.matcher(inputString); if (m.find()) // match
Alternativement, si vous souhaitez faire correspondre la chaîne entière, ajoutez un à la classe de caractères dans la méthode matches() :
if(s.matches("[a-z]+"))
Ou utilisez un modèle d'expression régulière complet :
if(s.matches("^[a-z]+$"))
Cela correspondra aux chaînes contenant uniquement des lettres minuscules, comme ^ et $ les ancres garantissent que la correspondance couvre toute la chaîne d'entrée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!