Java Matcher-Klasse

In Java,Matcherdie Klasse istjava.util.regexeine wichtige Klasse im Paket, die verwendet wird, um verschiedene Matching-Operationen auf Zeichenfolgen auszuführen.MatcherDie Klasse selbst kann nicht direkt instanziiert werden; stattdessen muss sie mithilfe derPatternder Klassematcher()Methode erstellt werden.

MatcherZu den Hauptfunktionen der Klasse gehören:

  • Matching-Operationen mit regulären Ausdrücken ausführen
  • Teilsequenzen in der Zeichenfolge finden, die dem Muster entsprechen
  • Übereinstimmenden Text ersetzen

Erstellen eines Matcher-Objekts

UmMatcherKlasse, müssen Sie zuerst einPatternObjekt, dann verwende es, um zu erstellenMatcherObjekt:

Beispiel

import java.util.regex.*;

// Ein Pattern-Objekt erstellen
Pattern pattern = Pattern.compile("a*b");

// Ein Matcher-Objekt erstellen
Matcher matcher = pattern.matcher("aaaaab");

Häufige Methoden der Matcher-Klasse


Methoden für Übereinstimmungsoperationen

matches()-Methode

matches()Die Methode versucht, die gesamte Eingabesequenz mit dem Muster abzugleichen:

Beispiel

boolean result = matcher.matches(); // Gibt true oder false zurück

lookingAt()-Methode

lookingAt()Die Methode versucht, das Muster beginnend am Anfang der Eingabesequenz abzugleichen:

Beispiel

boolean result = matcher.lookingAt(); // Muss nicht mit der gesamten Zeichenkette übereinstimmen

find()-Methode

find()Die Methode findet die nächste übereinstimmende Teilsequenz in der Eingabesequenz:

Beispiel

while(matcher.find()) {
    System.out.println("Übereinstimmung gefunden: " + matcher.group());
}

Methoden zum Abrufen von Übereinstimmungsinformationen

group()-Methode

group()Die Methode gibt die Eingabe-Teilsequenz zurück, die von der vorherigen Übereinstimmungsoperation gefunden wurde:

Beispiel

String matchedText = matcher.group();

start()- und end()-Methoden

start()undend()Die Methoden geben die Start- und Endindizes des vorherigen Treffers zurück:

Beispiel

int start = matcher.start(); // Startposition des Treffers
int end = matcher.end();     // Endposition des Treffers

groupCount()-Methode

groupCount()Gibt die Anzahl der Erfassungsgruppen im Muster dieses Matchers zurück:

Beispiel

int count = matcher.groupCount();

Methoden für Ersetzungsoperationen

replaceAll()-Methode

replaceAll()Die Methode ersetzt jede Teilsequenz in der Eingabesequenz, die dem Muster entspricht:

Beispiel

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

replaceFirst()-Methode

replaceFirst()Die Methode ersetzt die erste Teilsequenz in der Eingabesequenz, die dem Muster entspricht:

Beispiel

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

Beispiel

Nachfolgend ein vollständiges Beispiel, das die Verwendung zeigtMatcherclass:

Beispiel

import java.util.regex.*;

public class MatcherExample {
    public static void main(String[] args) {
        String text = "Der schnelle braune Fuchs springt über den faulen Hund";
        Pattern pattern = Pattern.compile("\\b\\w{4}\\b"); // 4-Buchstaben-Wörter abgleichen
        Matcher matcher = pattern.matcher(text);
       
        System.out.println("Originaltext: " + text);
        System.out.println("Passende 4-Buchstaben-Wörter:");
       
        while(matcher.find()) {
            System.out.println("Gefunden '" + matcher.group() +
                              "' an Position " + matcher.start() + "-" + (matcher.end()-1));
        }
       
        // Alle 4-Buchstaben-Wörter durch "****" ersetzen
        String replaced = matcher.replaceAll("****");
        System.out.println("\n"Ersetzte Zeichenkette: " + ersetzt);
    }
}

Ausgabeergebnis

原始文本: 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

Zusammenfassung

JavasMatcherDie Klasse bietet eine umfassende Funktionalität zur String-Verarbeitung, mit der Sie:

  1. Prüfen Sie, ob eine Zeichenkette mit einem bestimmten Muster übereinstimmt
  2. Suchen Sie nach Musterübereinstimmungen in einer Zeichenkette
  3. Extrahieren Sie übereinstimmende Zeichenketten
  4. Übereinstimmenden Text ersetzen

MeisternMatcherDie Klasse ist sehr wichtig für die Handhabung und den Musterabgleich von Zeichenketten und ist ein sehr praktisches Werkzeug in der Java-Programmierung

Methoden für Übereinstimmungsoperationen

Methode Beschreibung
boolean matches() Versucht, die gesamte Region mit dem Muster abzugleichen
boolean lookingAt() Versucht, die gesamte Region ausgehend von der Region abzugleichen
boolean find() Versucht, die nächste Teilsequenz zu finden
boolean find(int start) Findet die nächste Übereinstimmung ausgehend von der Position

Methoden zum Abrufen von Übereinstimmungsergebnissen

Methode Beschreibung
String group() Gibt die Teilsequenz der vorherigen Übereinstimmung zurück
String group(int group) Gibt den übereinstimmenden Inhalt der angegebenen Erfassungsgruppe zurück
String group(String name) Gibt den übereinstimmenden Inhalt der benannten Erfassungsgruppe zurück (Java 7+)
int groupCount() Gibt die Anzahl der Erfassungsgruppen im Muster zurück
int start() Gibt den Startindex der vorherigen Übereinstimmung zurück
int start(int group) Gibt den Startindex der Übereinstimmung für die angegebene Gruppe zurück
int end() Gibt den Endindex der vorherigen Übereinstimmung zurück
int end(int group) Gibt den Endindex der Übereinstimmung für die angegebene Gruppe zurück

Methoden für Ersetzungsoperationen

Methode Beschreibung
Matcher appendReplacement(StringBuffer sb, String replacement) Führt eine nicht-terminale Ersetzungsoperation aus
StringBuffer appendTail(StringBuffer sb) Führt eine terminale Ersetzungsoperation aus
String replaceAll(String replacement) Ersetzt alle übereinstimmenden Teilsequenzen
String replaceFirst(String replacement) Ersetzt die erste übereinstimmende Teilsequenz
static String quoteReplacement(String s) Gibt das Literal der Ersetzungszeichenfolge zurück

Methoden zur Steuerung der Region

Methode Beschreibung
Matcher region(int start, int end) Legt die Suchregion des Matchers fest
int regionStart() Gibt den Startindex der Region des Matchers zurück
int regionEnd() Gibt den Endindex der Region des Matchers zurück
boolean hasTransparentBounds() Prüft, ob transparente Grenzen verwendet werden
Matcher useTransparentBounds(boolean b) Legt fest, ob transparente Grenzen verwendet werden
boolean hasAnchoringBounds() Prüft, ob Verankerungsgrenzen verwendet werden
Matcher useAnchoringBounds(boolean b) Legt fest, ob Verankerungsgrenzen verwendet werden

Andere Methoden

Methode Beschreibung
Pattern pattern() Gibt das Muster dieses Matchers zurück
Matcher reset() Setzt den Matcher zurück
Matcher reset(CharSequence input) Setzt den Matcher mit neuer Eingabe zurück
boolean hitEnd() Gibt an, ob der Matcher das Ende der Eingabe erreicht hat
boolean requireEnd() Gibt an, ob mehr Eingabe für eine Übereinstimmung benötigt wird
Andere Erweiterungen