Regex-Trainer

Spickzettel

Zeichen

.beliebiges Zeichen (außer \n)
\.echter Punkt (Escape)
\d / \DZiffer / keine Ziffer
\w / \WWortzeichen / kein Wortzeichen
\s / \SWhitespace / kein Whitespace
\t \nTabulator, Zeilenumbruch

Zeichenklassen

[abc]a, b oder c
[a-z]Bereich a bis z
[^abc]alles außer a, b, c
[-+.]Minus, Plus oder Punkt

Quantoren

*0 oder mehr
+1 oder mehr
?0 oder 1
{n}genau n
{n,m}n bis m
*? +? ??genügsam (lazy)

Anker

^Anfang (Zeile mit re.M)
$Ende (Zeile mit re.M)
\bWortgrenze
\Bkeine Wortgrenze
\A \ZTextanfang / Textende

Gruppen

(…)Gruppe (merkt sich Treffer)
(?:…)Gruppe ohne Merken
(?P<name>…)benannte Gruppe
a|ba oder b
\1Rückverweis auf Gruppe 1
(?P=name)Rückverweis auf benannte Gruppe

Lookarounds

(?=…)danach folgt …
(?!…)danach folgt nicht …
(?<=…)davor steht …
(?<!…)davor steht nicht …

Flags

(?i) re.IGroß/klein egal
(?m) re.M^ $ pro Zeile
(?s) re.S. passt auch auf \n
(?x) re.XLeerzeichen/Kommentare erlaubt

Python re

import re
re.search(r"\d+", s)        # erster Treffer irgendwo  -> Match oder None
re.match(r"\d+", s)         # Treffer am Anfang
re.fullmatch(r"\d+", s)     # ganzer String muss passen
re.findall(r"\d+", s)       # Liste aller Treffer (bei Gruppen: Gruppeninhalte!)
re.finditer(r"\d+", s)      # Iterator über Match-Objekte
re.sub(r"\s+", " ", s)      # ersetzen
re.split(r"[,;]\s*", s)     # aufteilen
m.group(0), m.group(1), m.group("name"), m.span()