Maison >Java >javaDidacticiel >Pourquoi mon Regex ne fonctionne-t-elle pas dans String.matches() de Java ?

Pourquoi mon Regex ne fonctionne-t-elle pas dans String.matches() de Java ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-29 17:49:14336parcourir

Why Doesn't My Regex Work in Java's String.matches()?

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!

Déclaration:
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