Regex fĂŒr Einsteiger: So schreibst du regulĂ€re AusdrĂŒcke
Regex fĂŒr Einsteiger
RegulĂ€re AusdrĂŒcke â regex â sind Muster, die Text beschreiben. Mit regex kannst du Zeichenketten durchsuchen, Eingaben validieren, Daten extrahieren und komplexe Suchen-und-Ersetzen-Operationen mit einem einzigen kompakten Ausdruck durchfĂŒhren. Sobald du die Grundlagen verstanden hast, wird regex zu einem der leistungsstĂ€rksten Werkzeuge in deinem Programmier-Werkzeugkasten.
Was ist ein regulÀrer Ausdruck?
Ein regex ist eine Folge von Zeichen, die ein Suchmuster definiert. Das Muster \d{3}-\d{2}-\d{4} gleicht eine US-Sozialversicherungsnummer ab: drei Ziffern, Bindestrich, zwei Ziffern, Bindestrich, vier Ziffern.
Regex-Engines gibt es in praktisch jeder Programmiersprache â JavaScript, Python, Java, Ruby, Go â alle mit integrierter UnterstĂŒtzung.
Literale Zeichen
Die meisten Zeichen entsprechen sich selbst. Das Muster cat gleicht die wörtliche Zeichenkette "cat" ĂŒberall dort ab, wo sie vorkommt.
Pattern: cat
Matches: "cat" in "The cat sat on the mat."
Matches: "cat" in "catalog"
Der Abgleich mit literalen Zeichen ist unkompliziert, aber begrenzt. Die eigentliche StÀrke liegt in Metazeichen.
Metazeichen
Diese Zeichen haben eine besondere Bedeutung und mĂŒssen mit \ maskiert werden, um wörtlich abgeglichen zu werden:
. ^ $ * + ? { } [ ] \ | ( )
Zeichenklassen
Zeichenklassen gleichen ein einzelnes Zeichen aus einer Menge ab.
Notation mit eckigen Klammern
| Muster | Ăbereinstimmung |
|--------|------------------|
| [aeiou] | Jeder Vokal |
| [0-9] | Jede Ziffer |
| [a-zA-Z] | Jeder Buchstabe |
| [^0-9] | Jedes Zeichen, das KEINE Ziffer ist |
Vordefinierte Klassen
| Kurzform | Beschreibung |
|-----------|--------------|
| \d | Jede Ziffer (wie [0-9]) |
| \w | Buchstabe, Ziffer oder Unterstrich |
| \s | Leerzeichen, Tabulator, Zeilenumbruch |
| \D | Jede Nicht-Ziffer |
| \W | Jedes Nicht-Wort-Zeichen |
| \S | Jedes Nicht-Leerzeichen |
| . | Jedes Zeichen auĂer Zeilenumbruch |
Quantoren
Quantoren legen fest, wie oft das vorangehende Element vorkommen muss.
| Quantor | Bedeutung | Beispiel | Ăbereinstimmung |
|---------|-----------|---------|-----------------|
| * | Null oder mehr | a* | "", "a", "aa" |
| + | Ein oder mehr | a+ | "a", "aa", "aaa" |
| ? | Null oder eins | colou?r | "color", "colour" |
| {3} | Genau N | \d{3} | "123" |
| {2,4} | Zwischen N und M | \d{2,4} | "12", "123", "1234" |
Beispiele
\d+ â "42" in "Answer is 42"
https?:// â "http://" and "https://"
Anker
Anker gleichen Positionen ab, nicht Zeichen.
| Anker | Bedeutung |
|-------|-----------|
| ^ | Anfang der Zeichenkette |
| $ | Ende der Zeichenkette |
| \b | Wortgrenze |
| \B | Nicht-Wortgrenze |
^hello â matches "hello" only at the start
end$ â matches "end" only at the end
\bword\b â matches "word" as a whole word, not inside "sword"
Gruppen und Alternation
Erfassende Gruppen ( ) extrahieren abgeglichene Teile:
(\d{3})-(\d{4}) â "555-1234", captures "555" in group 1, "1234" in group 2
Nicht-Erfassende Gruppen (?: ) gruppieren ohne zu extrahieren:
(?:https?|ftp):// â "http://", "https://", "ftp://"
Alternation | fungiert als ODER:
cat|dog|bird â matches "cat", "dog", or "bird"
Praktische regex-Beispiele
| Anwendungsfall | Muster |
|---------------|--------|
| US-Telefonnummer | \d{3}-\d{3}-\d{4} |
| E-Mail (einfach) | \S+@\S+\.\S+ |
| IP-Adresse | \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} |
| Hashtag | #[a-zA-Z]\w* |
| Uhrzeit (HH:MM) | [01]\d|2[0-3]:[0-5]\d |
So testest du ein regex-Muster
Teste Muster immer interaktiv:
- Gib dein regex-Muster ein.
- Gib einen Teststring ein.
- Sieh in Echtzeit, welche Teile ĂŒbereinstimmen.
- Passe an und wiederhole.
Nutze das regex-Tester-Tool, um mit Mustern zu experimentieren. Es hebt Ăbereinstimmungen hervor, zeigt Erfassungsgruppen und hilft dir zu verstehen, was genau jeder Teil deines Ausdrucks bewirkt.