Expressions régulières en Java avec exemples : pour débutants

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Expressions régulières en Java : guide complet pour débutants

\n\n

Les expressions régulières (regex) sont un outil puissant pour rechercher, extraire et remplacer du texte selon un modèle. En Java, le travail avec les expressions régulières est implémenté via le package java.util.regex. Dans cet article, nous allons aborder les bases des expressions régulières en Java, apprendre à utiliser les classes Pattern et Matcher, et examiner des exemples pratiques.

\n\n

1. Classes principales pour travailler avec regex en Java

\n\n

En Java, deux classes principales sont utilisées pour travailler avec les expressions régulières :

\n\n
    \n
  • Pattern — représente une expression régulière compilée.
  • \n
  • Matcher — effectue des opérations de recherche et de correspondance avec le texte.
  • \n
\n\n

Il existe également une méthode pratique String.matches(), qui permet de vérifier rapidement si une chaîne correspond à un modèle, mais elle est moins flexible.

\n\n

Exemple 1 : Correspondance simple

\n\n
import java.util.regex.*;\n\npublic class RegexExample1 {\n    public static void main(String[] args) {\n        String text = "Bonjour, le monde ! Java est le meilleur langage.";\n        String pattern = "Java";\n\n        Pattern p = Pattern.compile(pattern);\n        Matcher m = p.matcher(text);\n\n        if (m.find()) {\n            System.out.println("Mot trouvé : " + m.group());\n        } else {\n            System.out.println("Aucune correspondance");\n        }\n    }\n}
\n\n

Sortie : Mot trouvé : Java

\n\n

2. Métacaractères et classes de caractères

\n\n

Les expressions régulières utilisent des caractères spéciaux (métacaractères) pour décrire des modèles :

\n\n
    \n
  • . — n'importe quel caractère (sauf saut de ligne)
  • \n
  • \\d — chiffre [0-9]
  • \n
  • \\D — non chiffre
  • \n
  • \\w — lettre, chiffre ou souligné [a-zA-Z0-9_]
  • \n
  • \\W — non mot
  • \n
  • \\s — caractère d'espacement
  • \n
  • \\S — non espacement
  • \n
  • [abc] — un des caractères a, b ou c
  • \n
  • [^abc] — tout caractère sauf a, b, c
  • \n
\n\n

Exemple 2 : Recherche de chiffres dans un texte

\n\n
import java.util.regex.*;\n\npublic class RegexExample2 {\n    public static void main(String[] args) {\n        String text = "Mon numéro : 123-456-7890";\n        String pattern = "\\\\d+"; // un ou plusieurs chiffres\n\n        Pattern p = Pattern.compile(pattern);\n        Matcher m = p.matcher(text);\n\n        while (m.find()) {\n            System.out.println("Nombre trouvé : " + m.group());\n        }\n    }\n}
\n\n

Sortie :

\n
Nombre trouvé : 123\nNombre trouvé : 456\nNombre trouvé : 7890
\n\n

3. Quantificateurs et limites

\n\n

Les quantificateurs indiquent combien de fois un élément du modèle doit se répéter :

\n\n
    \n
  • * — 0 fois ou plus
  • \n
  • + — 1 fois ou plus
  • \n
  • ? — 0 ou 1 fois
  • \n
  • {n} — exactement n fois
  • \n
  • {n,} — n fois ou plus
  • \n
  • {n,m} — de n à m fois
  • \n
\n\n

Les limites aident à spécifier où le modèle doit se trouver :

\n\n
    \n
  • ^ — début de la chaîne
  • \n
  • $ — fin de la chaîne
  • \n
  • \\b — limite de mot
  • \n
\n\n

Exemple 3 : Validation d'une adresse email

\n\n
import java.util.regex.*;\n\npublic class RegexExample3 {\n    public static void main(String[] args) {\n        String email = "user@example.com";\n        String pattern = "^[\\\\w.-]+@[\\\\w.-]+\\\\.\\\\w{2,}$";\n\n        boolean isValid = Pattern.matches(pattern, email);\n        System.out.println("Email valide : " + isValid);\n    }\n}
\n\n

Sortie : Email valide : true

\n\n

4. Groupes de capture et remplacement de texte

\n\n

Les groupes de capture permettent d'extraire des parties

Blogs

Book Recommendations