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
// 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
lookingAt()-Methode
lookingAt()Die Methode versucht, das Muster beginnend am Anfang der Eingabesequenz abzugleichen:
Beispiel
find()-Methode
find()Die Methode findet die nächste übereinstimmende Teilsequenz in der Eingabesequenz:
Beispiel
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
start()- und end()-Methoden
start()undend()Die Methoden geben die Start- und Endindizes des vorherigen Treffers zurück:
Beispiel
int end = matcher.end(); // Endposition des Treffers
groupCount()-Methode
groupCount()Gibt die Anzahl der Erfassungsgruppen im Muster dieses Matchers zurück:
Beispiel
Methoden für Ersetzungsoperationen
replaceAll()-Methode
replaceAll()Die Methode ersetzt jede Teilsequenz in der Eingabesequenz, die dem Muster entspricht:
Beispiel
replaceFirst()-Methode
replaceFirst()Die Methode ersetzt die erste Teilsequenz in der Eingabesequenz, die dem Muster entspricht:
Beispiel
Beispiel
Nachfolgend ein vollständiges Beispiel, das die Verwendung zeigtMatcherclass:
Beispiel
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:
- Prüfen Sie, ob eine Zeichenkette mit einem bestimmten Muster übereinstimmt
- Suchen Sie nach Musterübereinstimmungen in einer Zeichenkette
- Extrahieren Sie übereinstimmende Zeichenketten
- Ü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 |