Classe Pattern de Java
En Java,Patternla classe fait partie des composants essentiels de la fonctionnalité des expressions régulières ; elle appartient aujava.util.regexpaquet.
Une expression régulière est un puissant outil de traitement de texte utilisé pour faire correspondre, rechercher et remplacer des motifs spécifiques dans des chaînes de caractères.
PatternLa fonction principale de la classe est de compiler une expression régulière en un motif pour des opérations de correspondance efficaces ultérieurement.
Introduction aux expressions régulières
Une expression régulière est une syntaxe utilisée pour décrire des motifs de chaînes de caractères. Grâce à des symboles et des règles spécifiques, des règles complexes de correspondance de chaînes peuvent être définies. Par exemple :
\dCorrespond à n'importe quel chiffre (équivalent à[0-9])\wCorrespond à toute lettre, tout chiffre ou tout trait de soulignement (équivalent à[a-zA-Z0-9_])a+Correspond à une ou plusieurs lettres consécutivesa^Correspond au début d'une chaîne$Correspond à la fin d'une chaîne
Utilisation de base de la classe Pattern
Création d'un objet Pattern
PatternLa classe n'a pas de constructeur public ; elle doit être créée via la méthode statiquecompile()pour créer une instance :
Exemple
// Compiler l'expression régulière
Pattern pattern = Pattern.compile("a*b");
Méthodes courantes
matcher(CharSequence input)
Crée unMatcherobjet, utilisé pour effectuer des opérations de correspondance sur une chaîne d'entrée :
Exemple
matches(String regex, CharSequence input)
Une méthode statique qui détermine directement si la chaîne d'entrée correspond complètement à l'expression régulière :
Exemple
split(CharSequence input)
Divise la chaîne d'entrée selon l'expression régulière :
Exemple
Indicateurs d'expression régulière
Lors de la compilation d'une expression régulière, différents indicateurs peuvent être spécifiés pour modifier le comportement de correspondance :
| Option | Description |
|---|---|
Pattern.CASE_INSENSITIVE |
Ignorer la casse |
Pattern.MULTILINE |
Mode multiligne,^et$correspond au début et à la fin de chaque ligne |
Pattern.DOTALL |
.Correspond à tous les caractères, y compris les terminateurs de ligne |
Pattern.UNICODE_CASE |
Active le repli de casse compatible Unicode |
Exemple d'utilisation :
Exemple
Pattern pattern = Pattern.compile("a*b", Pattern.CASE_INSENSITIVE);
Applications pratiques de la classe Pattern
Validation du format d'e-mail
Exemple
Pattern emailPattern = Pattern.compile(emailRegex);
String email = "[email protected]";
boolean isValid = emailPattern.matcher(email).matches();
Extraction des nombres
Exemple
Pattern numberPattern = Pattern.compile("\\d+\\.?\\d*");
Matcher matcher = numberPattern.matcher(text);
if (matcher.find()) {
String number = matcher.group(); // "123.45"
}
Remplacement de chaînes
Exemple
Pattern phonePattern = Pattern.compile("\\d{3}-\\d{3}-\\d{4}");
String output = phonePattern.matcher(input).replaceAll("[PHONE]");
// Sortie : "Bonjour, mon numéro de téléphone est [PHONE]"
Conseils d'optimisation des performances
Précompilez les expressions régulières: Les expressions régulières qui doivent être utilisées plusieurs fois doivent être précompilées dans un
Patternobjet plutôt que recompilées à chaque fois qu'elles sont utilisées.Évitez les expressions régulières trop complexes: Les expressions régulières trop complexes peuvent entraîner une dégradation des performances, voire des problèmes de « backtracking catastrophique ».
Utilisez les groupes judicieusement: Les groupes non capturants
(?:...)offrent de meilleures performances que les groupes de capture(...)Si vous n'avez pas besoin de capturer le contenu, utilisez des groupes non capturants.
Résumé
PatternLa classe est au cœur de la fonctionnalité d'expression régulière de Java, offrant de puissantes capacités de correspondance de motifs de chaînes. Grâce à une utilisation appropriée de laPatternclasse et sa compagneMatcherclasse, diverses tâches de traitement de chaînes peuvent être efficacement réalisées. Maîtriser les expressions régulières et laPatternutilisation de la classe améliorera grandement les capacités de traitement de texte des développeurs.
Le tableau suivant répertoriePatternles méthodes courantes de la classe:
Méthodes de construction et de compilation
| Méthode | Description |
|---|---|
static Pattern compile(String regex) |
Compile l'expression régulière en un objet Pattern |
static Pattern compile(String regex, int flags) |
Compile l'expression régulière avec les indicateurs spécifiés |
static boolean matches(String regex, CharSequence input) |
Fait rapidement correspondre l'expression régulière (compilation + correspondance) |
static String quote(String s) |
Convertit la chaîne en un motif littéral (échappe tous les caractères spéciaux) |
Constantes de drapeaux (courantes)
| Option | Description |
|---|---|
Pattern.CASE_INSENSITIVE |
Correspondance insensible à la casse |
Pattern.MULTILINE |
Mode multiligne (^ et $ correspondent au début et à la fin des lignes) |
Pattern.DOTALL |
Le point (.) correspond à tous les caractères, y compris les terminateurs de ligne |
Pattern.UNICODE_CASE |
Active le repli de casse compatible Unicode |
Méthodes de correspondance et de découpage
| Méthode | Description |
|---|---|
Matcher matcher(CharSequence input) |
Crée un objet matcher |
String[] split(CharSequence input) |
Découpe la chaîne d'entrée avec le motif |
String[] split(CharSequence input, int limit) |
Découpage avec une limite |
Stream<String> splitAsStream(CharSequence input) |
Renvoie le flux découpé (Java 8+) |
Méthodes d'information sur Pattern
| Méthode | Description |
|---|---|
String pattern() |
Renvoie l'expression régulière compilée |
int flags() |
Renvoie les indicateurs définis au moment de la compilation |
String toString() |
Renvoie la représentation sous forme de chaîne du motif |