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. Sehen wir uns zunächst an, wie man sie verwendet:

Erstelle ein pattern mit Pattern.compile():

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

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 kannst du mit matcher.find() Übereinstimmungen 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

Erstelle eine Methode namens findWords, die zwei Argumente entgegennimmt:

  1. Eine Zeichenkette (text), in der gesucht werden soll
  2. Eine Zeichenkette (word), nach der gesucht werden soll

Die Methode soll:

  1. Pattern und Matcher verwenden, um alle Vorkommen des Wortes zu finden
  2. Eine Zeichenkette zurückgeben, die die Positionen enthält, an denen das Wort gefunden wurde
  3. Die Positionen durch Leerzeichen trennen

Die Rückgabemeldungen sollen lauten:

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

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

Übe selbstständig: Online-Java-Compiler