Menu
CoddyTech

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

Erstelle einen matcher für deinen Text:

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

Jetzt kannst du Ü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:

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

Beispiel mit mehreren Übereinstimmungen:

Pattern pattern = Pattern.compile("cat");
Matcher matcher = pattern.matcher("cat and cat");
while (matcher.find()) {
   System.out.println("Found at: " + matcher.start());
}
// Ausgabe:
// Gefunden bei: 0
// Gefunden bei: 8
challenge icon

Aufgabe

Einfach

Erstelle eine Methode namens findWords, die zwei Argumente entgegennimmt:

  1. Ein String (text), in dem gesucht werden soll
  2. Ein String (word), nach dem gesucht werden soll

Die Methode sollte:

  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 sollten 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

Teste ein Muster an deinem eigenen Text: Regex-Tester