Maison > Java > javaDidacticiel > Pourquoi `String.matches()` de Java ne parvient-il pas à trouver les mots en minuscules ?

Pourquoi `String.matches()` de Java ne parvient-il pas à trouver les mots en minuscules ?

Susan Sarandon
Libérer: 2024-11-25 17:56:11
original
893 Les gens l'ont consulté

Why Does Java's `String.matches()` Fail to Find Lowercase Words?

Puzzle Regex : Pourquoi String.matches() se comporte-t-il mal ?

Dans l'extrait de code suivant, l'objectif est d'utiliser des expressions régulières pour identifier les mots qui ne contiennent que des lettres minuscules :

String[] words = {"{apf","hum_","dkoe","12f"};
for(String s:words)
{
    if(s.matches("[a-z]"))
    {
        System.out.println(s);
    }
}
Copier après la connexion

Cependant, au lieu d'imprimer "dkoe", qui est le résultat attendu, le code ne produit aucune sortie. Pourquoi cela se produit-il ?

Les pièges de String.matches()

Le coupable réside dans l'incompréhension de la méthode String.matches(). Contrairement à ses homologues apparemment similaires dans d'autres langages, matches() en Java tente de faire correspondre l'intégralité de la chaîne d'entrée à l'expression régulière fournie. Cela signifie que l'expression doit correspondre à la chaîne entière, pas seulement à une partie de celle-ci.

Dans le code donné, l'expression régulière [a-z] correspond à n'importe quelle lettre minuscule. Ainsi, pour que matches() renvoie true, la chaîne d’entrée entière doit être constituée d’exactement un caractère minuscule. Cependant, aucun des mots saisis ne satisfait à cette condition.

La solution : introduction de Pattern et Matcher

Pour résoudre ce problème, il est recommandé d'utiliser des objets Pattern et Matcher, qui offrent plus de contrôle et de flexibilité dans la correspondance des expressions régulières :

Pattern p = Pattern.compile("[a-z]+");
Matcher m = p.matcher(inputstring);
if (m.find())
    // match found
Copier après la connexion

En utilisant le quantificateur dans la classe de caractères, nous nous assurons que l'expression correspond des chaînes contenant un ou plusieurs caractères minuscules, qui identifieront correctement le mot « dkoe ».

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal