Spickzettel
Zeichen
. | beliebiges Zeichen (außer \n) |
\. | echter Punkt (Escape) |
\d / \D | Ziffer / keine Ziffer |
\w / \W | Wortzeichen / kein Wortzeichen |
\s / \S | Whitespace / kein Whitespace |
\t \n | Tabulator, 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) |
\b | Wortgrenze |
\B | keine Wortgrenze |
\A \Z | Textanfang / Textende |
Gruppen
(…) | Gruppe (merkt sich Treffer) |
(?:…) | Gruppe ohne Merken |
(?P<name>…) | benannte Gruppe |
a|b | a oder b |
\1 | Rü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.I | Groß/klein egal |
(?m) re.M | ^ $ pro Zeile |
(?s) re.S | . passt auch auf \n |
(?x) re.X | Leerzeichen/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()