^
Anfang von Zeile oder String
Praxisbeispiel
^Hello # findet "Hello world", aber nicht "say Hello"
developer reference
Praktische Referenz für Regex im Alltag mit Suche, schnellem Kopieren und PDF-Druck.
Der Tester verwendet JavaScript RegExp mit globaler Suche (g). Für benannte Gruppen gilt (?<name>...). Python-re-Syntax und Optionen unten laufen in Python, nicht im Tester. Grenzen: 100.000 Textzeichen, 4.000 Musterzeichen und 1.000 Treffer; langsame Muster werden gestoppt.
35 Befehle sichtbar
^
Anfang von Zeile oder String
^Hello # findet "Hello world", aber nicht "say Hello"
$
Ende von Zeile oder String
world$ # findet "Hello world", aber nicht "world class"
\b
Wortgrenze: Grenze zwischen Wort und Nicht-Wort
\bcat\b # "cat", aber nicht "catch" oder "concat"
\B
Nicht-Wort-Grenze
\Bcat\B # "concatenate", aber nicht " cat "
*
0 oder mehr Wiederholungen (greedy)
ab*c # "ac", "abc", "abbc", "abbbc"…
+
1 oder mehr Wiederholungen (greedy)
ab+c # "abc", "abbc", aber NICHT "ac"
?
0 oder 1 Wiederholung (optional)
colou?r # "color" und "colour"
{n,m}
Zwischen n und m Wiederholungen
\d{2,4} # 2, 3 oder 4 Ziffern
\d{3} # genau 3 Ziffern
*? +? ??
Lazy-Versionen (nicht greedy)
# Eingabe: "<b>bold</b>"
<.+> # gierig: "<b>bold</b>"
<.+?> # nicht gierig: "<b>" dann "</b>"
[abc]
Zeichenklasse: eines der gelisteten Zeichen
[aeiou] # jeder Vokal
[a-z] # Kleinbuchstaben a-z
[A-Za-z0-9]
[^abc]
Negation: jedes Zeichen ausser den gelisteten
[^0-9] # keine Ziffern
\d \w \s
Kurzformen: \d Ziffer, \w Wort, \s Leerraum
\d # [0-9]
\w # [a-zA-Z0-9_]
\s # [ \t\n\r]
\D \W \S
Negierte Kurzformen
\D # keine Ziffer
\W # kein Wortzeichen
\S # kein Leerraum
.
Jedes Zeichen außer Zeilenenden; Option s (Python re.S) schließt Zeilenumbrüche ein
a.b # "aXb", "a b", "a1b"…
(...)
Capturing Group: erfasst den Match
(\d{4})-(\d{2})-(\d{2})
# findet "2024-01-15", group(1)="2024"
(?:...)
Non-capturing Group: gruppiert ohne Erfassung
(?:Mr|Mrs|Ms)\.\s\w+
# gruppiert Alternativen ohne Erfassung
(?<name>...)
Benannte Gruppe: erfasst mit Namen
JavaScript: (?<year>\d{4})-(?<month>\d{2})
match.groups.year
Python: (?P<year>\d{4})-(?P<month>\d{2})
m.group("year")
a|b
Alternative: a oder b
cat|dog # "cat" oder "dog"
(https?|ftp)://
(?=...) (?!...)
Positiver und negativer Lookahead
\d+(?= euro) # Zahl gefolgt von " euro" (ohne " euro" zu erfassen)
\d+(?! euro) # Zahl NICHT gefolgt von " euro"
(?<=...) (?<!...)
Positiver und negativer Lookbehind
(?<=\$)\d+ # Zahl nach "$"
re.search (pattern, string)
Findet das erste Vorkommen an beliebiger Stelle
import re
m = re.search(r"\d+", "abc 123 def")
if m:
print(m.group()) # "123"
re.match (pattern, string)
Matcht nur am Anfang des Strings
re.match(r"\d+", "123abc") # Treffer
re.match(r"\d+", "abc123") # None
re.findall (pattern, string)
Gibt eine Liste aller Matches zurueck
re.findall(r"\d+", "1 apple, 2 bananas, 3 pears")
# → ["1", "2", "3"]
re.sub (pattern, repl, string)
Ersetzt Matches durch repl
re.sub(r"\s+", " ", "too many spaces")
# → "too many spaces"
re.sub(r"(\w+)", r"[\1]", "hello world")
# → "[hello] [world]" (Rückverweis)
re.split (pattern, string)
Teilt einen String anhand von Pattern-Matches
re.split(r"[,;\s]+", "a, b; c d")
# → ["a", "b", "c", "d"]
re.compile (pattern, flags)
Kompiliert ein Pattern fuer wiederholte Nutzung vor
EMAIL = re.compile(r"[\w.+-]+@[\w-]+\.[\w.]+")
for line in lines:
if EMAIL.search(line): ...
re.IGNORECASE
Gross-/Kleinschreibung wird ignoriert
re.findall(r"hello", text, re.I)
re.compile(r"hello", re.IGNORECASE)
re.MULTILINE
^ und $ matchen Anfang/Ende jeder Zeile
re.findall(r"^\w+", text, re.M)
re.DOTALL
Punkt (.) matcht auch Newline
re.search(r"<div>.+?</div>", html, re.S)
re.VERBOSE
Erlaubt Kommentare im Pattern (re.X)
pattern = re.compile(r"""
\d{4} # Jahr
-
\d{2} # Monat
""", re.X)
[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}
Einfaches E-Mail-Muster; keine vollständige Validierung
[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}
https?://[\w/:%#$&?()~.=+\-]+
Einfaches HTTP/HTTPS-URL-Muster; kein vollständiger URL-Parser
https?://[\w/:%#$&?()~.=+\-]+
\b(?:\d{1,3}\.){3}\d{1,3}\b
Muster in IPv4-Form; prüft keine Oktettbereiche (0–255)
\b(?:\d{1,3}\.){3}\d{1,3}\b
\b\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])\b
Muster in YYYY-MM-DD-Form; prüft keine gültigen Kalenderdaten
\b\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])\b
(?:\+39)?[\s-]?(?:0\d{1,4}|3\d{2})[\s-]?\d{6,8}
Einfaches Muster für italienische Telefonnummern; bestätigt weder Gültigkeit noch Vergabe
(?:\+39)?[\s-]?(?:0\d{1,4}|3\d{2})[\s-]?\d{6,8}
Der Tester verwendet JavaScript RegExp. Python-Syntax wie (?P<name>...) und re.VERBOSE muss in Python getestet werden. Die Muster zeigen Formate, keine vollständige Validierung.
Verwende PDF drucken. Die Druckansicht enthält alle Befehle und Beispiele, auch in durch die Suche ausgeblendeten Abschnitten.
Ja. Stelle die statischen Dateien über einen lokalen HTTP-Server bereit. Suche, Filter und Kopieren laufen im Browser; der Regex-Tester benötigt HTTP mit erlaubten Workern.