Verwendung der Klassen Pattern und Matcher
In diesem Schritt lernen wir, wie wir die Matcher
-Klasse zusammen mit unserem Pattern
verwenden, um Vorkommen des Musters in einer gegebenen Eingabezeichenkette zu finden.
Wie wir im vorherigen Schritt besprochen haben, repräsentiert die Pattern
-Klasse den kompilierten regulären Ausdruck. Die Matcher
-Klasse wird verwendet, um tatsächlich Suchoperationen an einer bestimmten Eingabezeichenkette mit diesem kompilierten Muster durchzuführen.
So funktioniert der Prozess im Allgemeinen:
- Kompilieren des regulären Ausdrucks: Erstellen Sie ein
Pattern
-Objekt aus Ihrer regex-Zeichenkette mit Pattern.compile()
.
- Erstellen eines Matchers: Holen Sie sich ein
Matcher
-Objekt, indem Sie die matcher()
-Methode auf dem Pattern
-Objekt aufrufen und die Eingabezeichenkette übergeben, in der Sie suchen möchten.
- Durchführen der Übereinstimmungsprüfung: Verwenden Sie Methoden des
Matcher
-Objekts, um Übereinstimmungen zu finden. Häufige Methoden sind find()
(um die nächste Übereinstimmung zu finden) und matches()
(um zu überprüfen, ob die gesamte Eingabezeichenkette dem Muster entspricht).
Lassen Sie uns unser HelloJava.java
-Programm ändern, um einen Matcher
zu verwenden, um das Wort "Java" in einem Beispielsatz zu finden.
-
Öffnen Sie die Datei HelloJava.java
im WebIDE-Editor.
-
Ersetzen Sie den vorhandenen Code durch den folgenden:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class HelloJava {
public static void main(String[] args) {
// Define a simple regex pattern to match the word "Java"
String regexPattern = "Java";
// The input string to search within
String inputString = "Hello, Java! Welcome to Java programming.";
// Compile the regex pattern
Pattern pattern = Pattern.compile(regexPattern);
// Create a Matcher object
Matcher matcher = pattern.matcher(inputString);
// Find and print the matches
System.out.println("Searching for pattern: '" + regexPattern + "' in string: '" + inputString + "'");
while (matcher.find()) {
System.out.println("Found match at index: " + matcher.start());
}
}
}
Hier ist, was neu ist:
import java.util.regex.Matcher;
: Wir importieren die Matcher
-Klasse.
String inputString = "Hello, Java! Welcome to Java programming.";
: Wir definieren die Zeichenkette, in der wir suchen möchten.
Matcher matcher = pattern.matcher(inputString);
: Wir erstellen ein Matcher
-Objekt, indem wir die matcher()
-Methode auf unserem pattern
-Objekt aufrufen und die inputString
übergeben.
while (matcher.find()) { ... }
: Diese Schleife verwendet die find()
-Methode des Matcher
. Die find()
-Methode versucht, die nächste Teilzeichenkette der Eingabezeichenkette zu finden, die dem Muster entspricht. Sie gibt true
zurück, wenn eine Übereinstimmung gefunden wird, und false
sonst. Die while
-Schleife läuft so lange, wie find()
true
zurückgibt.
System.out.println("Found match at index: " + matcher.start());
: Innerhalb der Schleife gibt matcher.start()
den Startindex der übereinstimmenden Teilzeichenkette in der Eingabezeichenkette zurück, wenn eine Übereinstimmung gefunden wird. Wir geben diesen Index aus.
-
Speichern Sie die Datei (Strg+S oder Cmd+S).
-
Kompilieren Sie das geänderte Programm im Terminal:
javac HelloJava.java
-
Führen Sie das kompilierte Programm aus:
java HelloJava
Sie sollten eine Ausgabe ähnlich der folgenden sehen:
Searching for pattern: 'Java' in string: 'Hello, Java! Welcome to Java programming.'
Found match at index: 7
Found match at index: 27
Diese Ausgabe zeigt, dass unser Programm erfolgreich zwei Vorkommen des Wortes "Java" in der Eingabezeichenkette gefunden hat und den Startindex jeder Übereinstimmung ausgegeben hat.
Sie haben nun erfolgreich die Pattern
- und Matcher
-Klassen verwendet, um ein bestimmtes Muster in einer Zeichenkette zu finden. Im nächsten Schritt werden wir dieses Programm interaktiv gestalten, indem wir es dem Benutzer ermöglichen, die zu durchsuchende Zeichenkette einzugeben.