Classe Matcher Java

En Java,Matcherla classe estjava.util.regexune classe importante du package, utilisée pour effectuer diverses opérations de correspondance sur des chaînes.MatcherLa classe elle-même ne peut pas être instanciée directement ; à la place, elle doit être créée viaPatternde la classematcher()méthode pour la créer.

MatcherLes principales fonctions de la classe incluent :

  • Effectuer des opérations de correspondance d'expressions régulières
  • Rechercher les sous-séquences de la chaîne qui correspondent au motif
  • Remplacer le texte correspondant

Création d'un objet Matcher

Pour utiliserMatcherclasse, vous devez d'abord créer unPatternobjet, puis utilisez-le pour créerMatcherobjet :

Exemple

import java.util.regex.*;

// Créer un objet Pattern
Pattern pattern = Pattern.compile("a*b");

// Créer un objet Matcher
Matcher matcher = pattern.matcher("aaaaab");

Méthodes courantes de la classe Matcher


Méthodes d'opérations de correspondance

Méthode matches()

matches()La méthode tente de mettre en correspondance toute la séquence d'entrée avec le modèle :

Exemple

boolean result = matcher.matches(); // Renvoie true ou false

Méthode lookingAt()

lookingAt()La méthode tente de faire correspondre le motif en partant du début de la séquence d'entrée :

Exemple

boolean result = matcher.lookingAt(); // N'a pas besoin de correspondre à la chaîne entière

Méthode find()

find()La méthode trouve la sous-séquence correspondante suivante dans la séquence d'entrée :

Exemple

while(matcher.find()) {
    System.out.println("Found match: " + matcher.group());
}

Méthodes pour obtenir des informations sur les correspondances

Méthode group()

group()La méthode renvoie la sous-séquence d'entrée correspondant à l'opération de correspondance précédente :

Exemple

String matchedText = matcher.group();

Méthodes start() et end()

start()etend()Les méthodes renvoient les indices de début et de fin de la correspondance précédente :

Exemple

int start = matcher.start(); // Position de début de correspondance
int end = matcher.end();     // Position de fin de correspondance

Méthode groupCount()

groupCount()Renvoie le nombre de groupes de capture dans le motif de ce matcher :

Exemple

int count = matcher.groupCount();

Méthodes d'opération de remplacement

Méthode replaceAll()

replaceAll()La méthode remplace chaque sous-séquence dans la séquence d'entrée qui correspond au motif :

Exemple

String result = matcher.replaceAll("replacement");

Méthode replaceFirst()

replaceFirst()La méthode remplace la première sous-séquence dans la séquence d'entrée qui correspond au motif :

Exemple

String result = matcher.replaceFirst("remplacement");

Exemple

Voici un exemple complet montrant comment utiliserMatcherclasse :

Exemple

import java.util.regex.*;

public class MatcherExample {
    public static void main(String[] args) {
        String text = "Le rapide renard brun saute par-dessus le chien paresseux";
        Pattern pattern = Pattern.compile("\\b\\w{4}\\b"); // Faire correspondre les mots de 4 lettres
        Matcher matcher = pattern.matcher(text);
       
        System.out.println("Texte original : " + text);
        System.out.println("Correspondance des mots de 4 lettres :");
       
        while(matcher.find()) {
            System.out.println("Trouvé '" + matcher.group() +
                              "' à la position " + matcher.start() + "-" + (matcher.end()-1));
        }
       
        // Remplacer tous les mots de 4 lettres par "****"
        String replaced = matcher.replaceAll("****");
        System.out.println("\n"Texte remplacé : " + remplacé);
    }
}

Résultat de sortie

原始文本: The quick brown fox jumps over the lazy dog
匹配4字母单词:
找到 'quick' 在位置 4-8
找到 'brown' 在位置 10-14
找到 'jumps' 在位置 20-24
找到 'over' 在位置 26-29
找到 'lazy' 在位置 35-38

替换后的文本: The **** **** fox **** **** the **** dog

Résumé

Celui de JavaMatcherLa classe fournit une fonctionnalité puissante de correspondance d'expressions régulières, grâce à laquelle vous pouvez :

  1. Vérifier si une chaîne correspond à un motif spécifique
  2. Trouver les correspondances d'un motif dans une chaîne
  3. Extraire les sous-chaînes correspondantes
  4. Remplacer le texte correspondant

MaîtriserMatcherla classe est très importante pour le traitement des chaînes et la correspondance de motifs textuels, et c'est un outil très pratique en programmation Java.

Méthodes d'opérations de correspondance

Méthode Description
boolean matches() Tente de faire correspondre la région entière au motif
boolean lookingAt() Tente de faire correspondre le motif à partir du début de la région
boolean find() Tente de trouver la sous-séquence correspondante suivante
boolean find(int start) Trouve la correspondance suivante à partir de la position spécifiée

Méthodes pour obtenir les résultats de correspondance

Méthode Description
String group() Renvoie la sous-séquence de la correspondance précédente
String group(int group) Renvoie le contenu correspondant du groupe de capture spécifié
String group(String name) Renvoie le contenu correspondant du groupe de capture nommé (Java 7+)
int groupCount() Renvoie le nombre de groupes de capture dans le motif
int start() Renvoie l'index de début de la correspondance précédente
int start(int group) Renvoie l'index de début de la correspondance pour le groupe spécifié
int end() Renvoie l'index de fin de la correspondance précédente
int end(int group) Renvoie l'index de fin de la correspondance pour le groupe spécifié

Méthodes d'opération de remplacement

Méthode Description
Matcher appendReplacement(StringBuffer sb, String replacement) Effectue une opération de remplacement non terminale
StringBuffer appendTail(StringBuffer sb) Effectue une opération de remplacement terminale
String replaceAll(String replacement) Remplace toutes les sous-séquences correspondantes
String replaceFirst(String replacement) Remplace la première sous-séquence correspondante
static String quoteReplacement(String s) Renvoie le littéral de la chaîne de remplacement

Méthodes de contrôle de région

Méthode Description
Matcher region(int start, int end) Définit la région de recherche du matcher
int regionStart() Renvoie l'index de début de la région du matcher
int regionEnd() Renvoie l'index de fin de la région du matcher
boolean hasTransparentBounds() Vérifie si des limites transparentes sont utilisées
Matcher useTransparentBounds(boolean b) Définit si des limites transparentes sont utilisées
boolean hasAnchoringBounds() Vérifie si des limites d'ancrage sont utilisées
Matcher useAnchoringBounds(boolean b) Définit si des limites d'ancrage sont utilisées

Autres méthodes

Méthode Description
Pattern pattern() Renvoie le motif de ce matcher
Matcher reset() Réinitialise le matcher
Matcher reset(CharSequence input) Réinitialise le matcher avec une nouvelle entrée
boolean hitEnd() Indique si le matcher a atteint la fin de l'entrée
boolean requireEnd() Indique si une entrée supplémentaire est nécessaire pour une correspondance
Autres extensions