Menu
Coddy logo textTech

Musterabgleich mit Regex

Teil des Abschnitts Logik & Ablauf der Java-Journey von Coddy — Lektion 47 von 59.

Die Klassen Pattern und Matcher bieten leistungsstarke Werkzeuge für Regex-Operationen in Java. Zuerst verstehen wir, wie man sie verwendet:

Erstellen Sie ein pattern mit Pattern.compile():

Pattern pattern = Pattern.compile("cat");
// Creates a pattern to find "cat"

Erstellen Sie einen matcher für Ihren Text:

String text = "The cat and dog";
Matcher matcher = pattern.matcher(text);
// Creates a matcher for the text

Jetzt können Sie Übereinstimmungen mit matcher.find() finden:

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

Nach der Ausführung des obigen Codes lautet die Ausgabe: Found at: 4

Die Methoden verstehen:

  • <b>matcher.find()</b> - Sucht nach dem nächsten Vorkommen des Musters im Text
    • Gibt true zurück, wenn eine Übereinstimmung gefunden wurde
    • Gibt false zurück, wenn keine weiteren Übereinstimmungen existieren
    • Deshalb verwenden wir es in einer while-Schleife – um alle Vorkommen zu finden
  • <b>matcher.start()</b> - Gibt den Startindex (Position) der letzten von find() gefundenen Übereinstimmung zurück
    • In unserem Beispiel beginnt „cat“ an Index 4 in „The cat and dog“
    • Muss nach einem erfolgreichen find() aufgerufen werden

Beispiel mit mehreren Treffern:

Pattern pattern = Pattern.compile("cat");
Matcher matcher = pattern.matcher("cat and cat");

while (matcher.find()) {
   System.out.println("Found at: " + matcher.start());
}
// Output:
// Found at: 0
// Found at: 8
challenge icon

Aufgabe

Einfach

Erstellen Sie eine Methode namens findWords, die zwei Argumente nimmt:

  1. Ein String (text) zum Durchsuchen
  2. Ein String (word) zum Finden

Die Methode sollte:

  1. Pattern und Matcher verwenden, um alle Vorkommen des Wortes zu finden
  2. Einen String zurückgeben, der die Positionen enthält, an denen das Wort gefunden wurde
  3. Positionen sollten durch Leerzeichen getrennt sein

Rückgabemeldungen sollten sein:

  • Wenn irgendeine Eingabe null ist: return "Invalid input"
  • Wenn das Wort nicht gefunden: return "Not found"
  • Wenn gefunden: Positionen zurückgeben (z. B. "4 10 15")

Spickzettel

Die Klassen Pattern und Matcher bieten leistungsstarke Tools für Regex-Operationen in Java.

Erstellen Sie ein pattern mit Pattern.compile():

Pattern pattern = Pattern.compile("cat");
// Erstellt ein Pattern, um "cat" zu finden

Erstellen Sie einen matcher für Ihren Text:

String text = "The cat and dog";
Matcher matcher = pattern.matcher(text);
// Erstellt einen Matcher für den Text

Finden Sie Übereinstimmungen mit matcher.find():

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

Wichtige Methoden:

  • <b>matcher.find()</b> - Durchsucht nach dem nächsten Vorkommen des Patterns
    • Gibt true zurück, wenn gefunden, false, wenn keine weiteren Übereinstimmungen
    • In einer Schleife verwenden, um alle Vorkommen zu finden
  • <b>matcher.start()</b> - Gibt den Startindex der letzten gefundenen Übereinstimmung zurück
    • Nach einem erfolgreichen find() aufrufen

Probier es selbst

import java.util.Scanner;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class Main {
    public static String findWords(String text, String word) {
        // Schreibe deinen Code hier
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String text = scanner.nextLine();
        String word = scanner.nextLine();
        
        if (text.equals("null")) text = null;
        if (word.equals("null")) word = null;
        
        System.out.println(findWords(text, word));
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf