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: Vollständige Anleitung mit Code-Beispielen



Reguläre Ausdrücke (regex) sind ein leistungsstarkes Werkzeug zum Suchen, Extrahieren und Ersetzen von Text nach einem Muster. In Java wird die Arbeit mit regulären Ausdrücken über zwei Hauptklassen realisiert: java.util.regex.Pattern (Kompilierung des Musters) und java.util.regex.Matcher (Ausführung der Suche). In diesem Artikel werden wir die Syntax, die wichtigsten Methoden und praktische Beispiele durchgehen, die Ihnen helfen, regex sicher in realen Projekten einzusetzen.



1. Grundlagen der Arbeit mit regulären Ausdrücken in Java

Bevor wir zu den Beispielen übergehen, lassen Sie uns die Schlüsselklassen und ihre Interaktion durchgehen.



Die Klasse Pattern

Pattern ist eine kompilierte Darstellung eines regulären Ausdrucks. Sie wird mit der statischen Methode Pattern.compile() erstellt. Ohne Kompilierung ist die Verwendung von regex nicht möglich.



Die Klasse Matcher

Matcher ist die "Engine", die die Suche nach dem angegebenen Muster in einer Zeichenkette durchführt. Sie wird mit der Methode pattern.matcher(inputString) erstellt.



Grundlegende Syntax der Metazeichen

  • . — ein beliebiges Zeichen (außer Zeilenumbruch)
  • \\d — eine Ziffer (0-9)
  • \\w — ein Buchstabe, eine Ziffer oder ein Unterstrich
  • \\s — ein Leerzeichen
  • ^ — Anfang der Zeichenkette
  • $ — Ende der Zeichenkette
  • * — 0 oder mehr Wiederholungen
  • + — 1 oder mehr Wiederholungen
  • ? — 0 oder 1 Wiederholung
  • {n,m} — von n bis m Wiederholungen
  • [] — Zeichensatz (z.B. [a-z] — jeder Kleinbuchstabe)
  • () — Erfassungsgruppe


Beispiel 1: Einfache Überprüfung einer Telefonnummer

import java.util.regex.*;

public class PhoneValidator { public static void main(String[] args) { String phone = "+7 (999) 123-45-67"; String regex = "^\\\\+7\\\\s\\\\(\\\\d{3}\\\\)\\\\s\\\\d{3}-\\\\d{2}-\\\\d{2}$"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(phone); if (matcher.matches()) { System.out.println("Nummer ist korrekt"); } else { System.out.println("Nummer entspricht nicht dem Format"); } }}


2. Methoden von Matcher: matches(), find() und Erfassungsgruppe

Das Verständnis des Unterschieds zwischen matches() und find() ist der Schlüssel zur erfolgreichen Arbeit mit regex in Java.



  • matches() — prüft, ob die gesamte Zeichenkette vollständig dem Muster entspricht (fügt implizit ^ und $ hinzu).
  • find() — sucht nach einer Teilzeichenkette, die dem Muster entspricht, an einer beliebigen Stelle in der Zeichenkette.
  • group() — gibt die gefundene Übereinstimmung oder den Wert der Erfassungsgruppe zurück.


Beispiel 2: Extrahieren von E-Mail-Adressen aus Text mit find() und Gruppen

import java.util.regex.*;

public class EmailExtractor { public static void main(String[] args) { String text = "Kontakte: support@example.com, info@test.org und admin@site.net."; String regex = "([a-zA-Z0-9._%+-]+)@([a-zA-Z0-9.-]+)\\\\.([a-zA-Z]{2,})"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(text); while (matcher.find()) { System.out.println("Vollständige E-Mail: " + matcher.group()); System.out.println("Benutzername: " + matcher.group(1)); System.out.println("Domain: " + matcher.group(2)); System.out.println("Zone: " + matcher.group(3)); System.out.println("---"); } }}


Beispiel 3: Passwortvalidierung mit matches()

Anforderungen: 8 bis 20 Zeichen, mindestens ein Großbuchstabe, ein

Blogs

Buchempfehlungen