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
// 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
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
Méthode find()
find()La méthode trouve la sous-séquence correspondante suivante dans la séquence d'entrée :
Exemple
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
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 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
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
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
Exemple
Voici un exemple complet montrant comment utiliserMatcherclasse :
Exemple
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 :
- Vérifier si une chaîne correspond à un motif spécifique
- Trouver les correspondances d'un motif dans une chaîne
- Extraire les sous-chaînes correspondantes
- 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 |