Reguläre Ausdrücke in Java: Vollständiger Leitfaden für Anfänger
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 das Paket java.util.regex realisiert. In diesem Artikel werden wir die Grundlagen regulärer Ausdrücke in Java erläutern, lernen, die Klassen Pattern und Matcher zu verwenden, und praktische Beispiele betrachten.
1. Grundlegende Klassen für die Arbeit mit regex in Java
In Java werden für die Arbeit mit regulären Ausdrücken zwei Hauptklassen verwendet:
- Pattern — stellt einen kompilierten regulären Ausdruck dar.
- Matcher — führt Such- und Vergleichsoperationen mit dem Text durch.
Es gibt auch die praktische Methode String.matches(), mit der Sie schnell überprüfen können, ob eine Zeichenkette einem Muster entspricht, aber sie ist weniger flexibel.
Beispiel 1: Einfache Übereinstimmung
import java.util.regex.*;
public class RegexExample1 { public static void main(String[] args) { String text = "Hallo, Welt! Java ist die beste Sprache."; String pattern = "Java";
Pattern p = Pattern.compile(pattern); Matcher m = p.matcher(text);
if (m.find()) { System.out.println("Wort gefunden: " + m.group()); } else { System.out.println("Keine Übereinstimmungen"); } }}Ausgabe: Wort gefunden: Java
2. Metazeichen und Zeichenklassen
Reguläre Ausdrücke verwenden spezielle Zeichen (Metazeichen) zur Beschreibung von Mustern:
.— jedes beliebige Zeichen (außer Zeilenumbruch)\\d— Ziffer [0-9]\\D— keine Ziffer\\w— Buchstabe, Ziffer oder Unterstrich [a-zA-Z0-9_]\\W— kein Wortzeichen\\s— Leerzeichen\\S— kein Leerzeichen[abc]— eines der Zeichen a, b oder c[^abc]— jedes Zeichen außer a, b, c
Beispiel 2: Suche nach Ziffern im Text
import java.util.regex.*;
public class RegexExample2 { public static void main(String[] args) { String text = "Meine Nummer: 123-456-7890"; String pattern = "\\\\d+"; // eine oder mehr Ziffern
Pattern p = Pattern.compile(pattern); Matcher m = p.matcher(text);
while (m.find()) { System.out.println("Zahl gefunden: " + m.group()); } }}Ausgabe:
Zahl gefunden: 123Zahl gefunden: 456Zahl gefunden: 78903. Quantifizierer und Grenzen
Quantifizierer geben an, wie oft ein Musterelement wiederholt werden soll:
*— 0 oder mehr Mal+— 1 oder mehr Mal?— 0 oder 1 Mal{n}— genau n Mal{n,}— n oder mehr Mal{n,m}— von n bis m Mal
Grenzen helfen anzugeben, wo sich das Muster befinden soll:
^— Anfang der Zeichenkette$— Ende der Zeichenkette\\b— Wortgrenze
Beispiel 3: Überprüfung einer E-Mail-Adresse
import java.util.regex.*;
public class RegexExample3 { public static void main(String[] args) { String email = "user@example.com"; String pattern = "^[\\\\w.-]+@[\\\\w.-]+\\\\.\\\\w{2,}$";
boolean isValid = Pattern.matches(pattern, email); System.out.println("E-Mail ist gültig: " + isValid); }}Ausgabe: E-Mail ist gültig: true
4. Erfassungsgruppen und Textersetzung
Erfassungsgruppen ermöglichen das Extrahieren von Teil