Reguläre Ausdrücke in Java mit Beispielen: in der Praxis

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Reguläre Ausdrücke in Java: von der Theorie zur Praxis

\n

Reguläre Ausdrücke (Regex) sind ein mächtiges Werkzeug zum Suchen, Ersetzen und Validieren von Text. In Java wird die Arbeit mit ihnen über das Paket java.util.regex realisiert, das zwei Hauptklassen umfasst: Pattern (Vorlage) und Matcher (Vergleicher). In diesem Artikel analysieren wir die Syntax, die wichtigsten Methoden und festigen das Wissen anhand realer Codebeispiele.

\n

Das Material wird sowohl für Anfänger, die gerade Java kennenlernen, als auch für erfahrene Entwickler nützlich sein, die ihr Wissen auffrischen möchten. Alle Beispiele können sofort in Ihrer IDE ausgeführt werden.

\n\n

1. Grundlagen der Arbeit mit Pattern und Matcher

\n

Jede Arbeit mit Regex in Java beginnt mit der Kompilierung einer Vorlage über Pattern.compile(). Danach wird ein Matcher-Objekt erstellt, das die Vorlage auf eine Zeichenkette anwendet.

\n

Betrachten wir ein einfaches Beispiel: die Suche nach allen Ziffern in einem Text.

\n
import java.util.regex.Matcher;\nimport java.util.regex.Pattern;\n\npublic class RegexDemo {\n    public static void main(String[] args) {\n        String text = "Java Version 21 wurde im Jahr 2023 veröffentlicht";\n        String regex = "\\\\d+"; // eine oder mehrere Ziffern\n\n        Pattern pattern = Pattern.compile(regex);\n        Matcher matcher = pattern.matcher(text);\n\n        while (matcher.find()) {\n            System.out.println("Gefunden: " + matcher.group());\n        }\n    }\n}
\n

Ausgabe des Programms:

\n
Gefunden: 21\nGefunden: 2023
\n

Beachten Sie den doppelten Backslash \\\\d – in Java erfordert das Zeichenfolgenliteral das Escapen des umgekehrten Schrägstrichs. Wenn im Regex \\d angegeben werden muss, schreiben wir im Code \\\\d.

\n\n

2. Syntax regulärer Ausdrücke: Metazeichen und Quantoren

\n

Um Regex effektiv zu nutzen, ist es wichtig, die grundlegenden Metazeichen zu kennen:

\n
    \n
  • . – jedes beliebige Zeichen (außer Zeilenumbruch);
  • \n
  • \\\\d – eine Ziffer (entspricht [0-9]);
  • \n
  • \\\\w – Buchstabe, Ziffer oder Unterstrich ([a-zA-Z0-9_]);
  • \n
  • \\\\s – ein Leerzeichen;
  • \n
  • ^ – Anfang der Zeichenkette;
  • \n
  • $ – Ende der Zeichenkette.
  • \n
\n

Quantoren steuern die Anzahl der Wiederholungen:

\n
    \n
  • + – ein- oder mehrmals;
  • \n
  • * – null- oder mehrmals;
  • \n
  • ? – null- oder einmal;
  • \n
  • {n} – genau n-mal;
  • \n
  • {n,m} – von n bis m-mal.
  • \n
\n

Beispiel: Finden wir alle Wörter, die nur aus lateinischen Buchstaben bestehen und eine Länge von 3 bis 5 Zeichen haben.

\n
String text = "Java regex example for beginners";\nString regex = "\\\\b[a-zA-Z]{3,5}\\\\b";\n\nPattern pattern = Pattern.compile(regex);\nMatcher matcher = pattern.matcher(text);\n\nwhile (matcher.find()) {\n    System.out.println(matcher.group());\n}\n// Ausgabe: Java, regex, for
\n

Die Wortgrenze \\\\b verhindert teilweise Übereinstimmungen (z. B. wird "Java" nicht Teil von "JavaScript" sein).

\n\n

3. Praktische Beispiele: Validierung und Datenextraktion

\n

Kommen wir zu Aufgaben, die in der realen Entwicklung häufig vorkommen.

\n\n

3.1. Validierung einer E-Mail-Adresse

\n

Einfachste Überprüfung: Vorhandensein des "@"-Zeichens und der Domain.

\n
public static boolean isValidEmail(String email) {\n    String regex = "^[\\\\w.-]+@[\\\\w.-]+\\\\.\\\\w{2,}$";\n    return Pattern.matches(regex, email);\n}\n\npublic static void main(String[] args) {\n    System.out.println(isValidEmail("user@example.com")); // true\n    System.out.println(isValidEmail("invalid-email"));    // false\n}
\n

Die Methode Pattern.matches() überprüft automatisch die gesamte Zeichenkette (entspricht matcher.matches()).

\n\n

3.2. Extraktion von Telefonnummern

\n

Angenommen, im Text kommen Nummern im Format "+7 (999) 123-45-67" vor.

\n
String text = "Kontakt: +                

Blogs

Buchempfehlungen