Metazeichen / Grundzeichen


AusdruckBeschreibung
.Ein beliebiges Zeichen. Beispiel: a.caac, abc
\.Literal Punkt (suche den Punkt .)
^Zeilen-/Stringanfang. Beispiel: ^abc
$Zeilen-/Stringende. Beispiel: abc$
[]Zeichenklasse. Beispiel: [A-Za-z0-9]
[^...]Negierte Zeichenklasse (kein Zeichen aus …). Beispiel: [^e]
-Bereich in Zeichenklasse. Beispiel: [0-9]
()Gruppierung / Capture. Beispiel: (\d+)
(?:...)Gruppierung ohne Capture
|Oder (Alternation). Beispiel: M(a | e)ier (ohne \ geht nur nich anders wegen Markdown Table)
\Escape für Metazeichen, leitet vordefinierte Klassen ein

Quantifier


AusdruckBeschreibung
*0 oder mehr
+1 oder mehr
?0 oder 1 (optional)
{n}genau n
{n,m}zwischen n und m
{n,}mindestens n
.*?lazy (falls Flavor unterstützt)

Anchors & Wortgrenzen


AusdruckBeschreibung
^Zeilen-/Stringanfang
$Zeilen-/Stringende
\bWortgrenze (whole-word searches). Beispiel: \babc\b
\Bkeine Wortgrenze

Lookahead und Lookbehind


SyntaxNameBeschreibungBeispiel
(?=...)Positive LookaheadMuss folgen, wird nicht erfasst\d(?=€) findet Ziffern vor €
(?!...)Negative LookaheadDarf nicht folgen\d(?!€) findet Ziffern NICHT vor €
(?<=...)Positive LookbehindMuss vorangehen(?<=€)\d findet Ziffern nach €
(?<!...)Negative LookbehindDarf nicht vorangehen(?<!€)\d findet Ziffern NICHT nach €

Gierig vs. Nicht-gierig


Gierig (greedy)

.* – matcht so viel wie möglich
Text: “a123b456c”
a.*c findet: “a123b456c”

Nicht-gierig (lazy)

.*? – matcht so wenig wie möglich
Text: “a123b456c”
a.*?c findet: “a123b456c” (minimal)

Vordefinierte Zeichenklassen


AusdruckBedeutungBeispiel
\sWhitespace (Space, Tab, Newline)\s+ findet Leerraum
\SKein Whitespace\S+
\dZiffer (0–9)\d{4,8} (z. B. 089 5001)
\DKeine Ziffer\D+
\wWord-Character (Buchst., Ziff., _)\w+
\WKein Word-Character\W+
\bWortgrenzesiehe oben
\BKeine Wortgrenzesiehe oben

Beispiel aus Text:

  • a\db ⇒ passt: a0b, a1b, … a9b
  • \d{4,8} ⇒ z. B. 089 5001 (Münchner Telefonnummer, vereinfacht)

Eigene Zeichenklassen


PatternBeschreibungBeispiel
[abc]Eines der Zeichen a, b oder c[aeiou] findet Vokale
[a-z]Alle Kleinbuchstaben[a-z]+ findet “hello”
[A-Z]Alle Großbuchstaben[A-Z]+ findet “HELLO”
[0-9]Alle Ziffern[0-9]{3} findet “123”
[^abc]NICHT a, b oder c (Negation)[^0-9] findet Nicht-Ziffern
[a-zA-Z0-9]Alphanumerisch[a-zA-Z0-9]+ findet “Test123”
Hinweis: In Zeichenklassen sind []^ - kontextabhängig normale Zeichen.

Beispiele für häufige Muster


AusdruckZweck
abcEnthält abc
^abcBeginnt mit abc
abc$Endet mit abc
\babc\bGanzes Wort abc
^\d+$Nur Ziffern (ganzer String)
.+Mindestens 1 Zeichen
[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}Einfache E‑Mail
\b(?:\d{1,3}\.){3}\d{1,3}\bVereinfachte IPv4
words?word oder words
\d+(,\d+)?Zahl mit optionalen Nachkommastellen (Komma)

Gruppen / Alternation


SyntaxTypBeschreibungBeispiel
(abc)ErfassungsgruppeWird gespeichert und kann referenziert werden(\d{3})-(\d{2})
(?:abc)Nicht-erfassendNur Gruppierung, kein Speichern(?:http|https)://
(a|b)Alternativea ODER b(jpg|png|gif)

Tools / Flags (Kurz)


AusdruckBedeutung
iCase-insensitive ((?i)pattern oder Tool‑Flag)
mMultiline (^/$ pro Zeile)
sDotall (. matcht \n)
grep -Eerweiterte Regex (POSIX‑ERE)
grep -PPerl‑like (PCRE)
regex101.comTesten: Flavor wählen (PCRE, ECMAScript, POSIX)

PowerShell: Operatoren


OperatorKurzbeschreibungBeispiel
-match / -imatch / -cmatchPrüft Match; i = case-insens., c = case-sens.$eingabe -match ".{8,}" (>=8 Zeichen)
-notmatch / -inotmatch / -cnotmatchKein Treffer
-replace / -ireplace / -creplaceErsetzt (liefert String)$old = "Windows 8.0" ; $old -replace "8\.\d","10"Windows 10
-splitZerlegt String an Pattern (Trennzeichen nicht im Ergebnis)$woerter = "a b c" -split "\s"

PowerShell-Beispiele (Code):

# Match-Beispiel: mindestens 8 Zeichen
if ($eingabe -match ".{8,}") { "OK." } else { "Ungültig." }
 
# Replace-Beispiel: 8.x -> 10
$old = "Windows 8.1"
$old -replace "8\.\d", "10"   # -> "Windows 10"
 
# Split-Beispiel: Auftrennen bei Whitespace
$woerter = "Das sind Wörter." -split "\s"

Wichtig: Bei -replace mit Backreferences den Ersetzungsstring in '...' setzen (keine Variablen-Interpolation), z. B. '$1Linux$2'.

Praktische Regex-Patterns


Zahl in Text

zahl = str.match(/\d+/g)

Email-Adresse (einfach)

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ Erklärt:

  • [a-zA-Z0-9._%+-]+ – Benutzername (Buchstaben, Zahlen, Sonderzeichen)
  • @ – At-Zeichen (Pflicht)
  • [a-zA-Z0-9.-]+ – Domain-Name
  • \.[a-zA-Z]{2,} – Top-Level-Domain (mindestens 2 Zeichen)

URL (HTTP/HTTPS)

^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)$

Datum (DD.MM.YYYY oder DD/MM/YYYY)

^(0[1-9]|[12][0-9]|3[01])[./-](0[1-9]|1[012])[./-](19|20)\d\d$ Findet: 01.01.2024, 31/12/2023, 15-06-1999

Telefonnummer (deutsch)

^(\+49|0)[1-9]\d{1,14}$ Findet: +4915112345678, 015112345678

Deutsche Postleitzahl

^\d{5}$ Findet: 10115, 80331, 20095

IP-Adresse (IPv4)

^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$ Findet: 192.168.1.1, 10.0.0.1, 255.255.255.0

Passwort-Validierung

^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$ Anforderungen:

  • Mindestens 8 Zeichen
  • Mindestens 1 Großbuchstabe
  • Mindestens 1 Kleinbuchstabe
  • Mindestens 1 Ziffer
  • Mindestens 1 Sonderzeichen

UUID

^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ Findet: 550e8400-e29b-41d4-a716-446655440000

HTML-Tags entfernen

<[^>]*> Beispiel:  <p>Text</p> → “Text”

Hexadezimal-Farbcode

^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$ Findet: “#FF5733”, “#F00”, “FF5733”

Kreditkartennummer (Visa/Mastercard)

^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14})$

MAC-Adresse

^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$ Findet: 00:1B:44:11:3A:B7, 00-1B-44-11-3A-B7

IBAN (deutsch)

^DE\d{20}$

ISBN-10

^\d{9}[\dX]$

Zeit (HH:MM)

^([01]\d|2[0-3]):([0-5]\d)$

Logfile-Zeitstempel

^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}

Dateiname mit Extension

^[\w\-. ]+\.(jpg|png|pdf)$

$$([^$$]+)$$$([^)]+)$