Reguläre Ausdrücke (RegExp, kurz Regex) beschreiben Textmuster. Du schreibst sie zwischen Schrägstrichen: /muster/flags.
Erste Schritte
Ergebnis
true 12345 [ '12345', '67890' ] Meine Nummer ist #####, deine #####.
Bausteine
| Muster | Bedeutung |
|---|---|
. | beliebiges Zeichen außer Zeilenumbruch |
\d \D | Ziffer / keine Ziffer |
\w \W | Wortzeichen [A-Za-z0-9_] / anderes |
\s \S | Leerraum / kein Leerraum |
^ $ | Anfang / Ende |
\b | Wortgrenze |
[abc] [a-z] [^0-9] | Zeichenklasse |
a|b | a oder b |
( ) | Gruppe |
* + ? | 0 oder mehr, 1 oder mehr, 0 oder 1 |
{3} {2,4} | genau 3 / 2 bis 4 |
Flags
| Flag | Wirkung |
|---|---|
g | alle Treffer (global) |
i | Groß-/Kleinschreibung ignorieren |
m | ^ und $ pro Zeile |
s | . passt auch auf Zeilenumbrüche |
u | Unicode-Unterstützung |
Ergebnis
[ 'Python', 'python', 'PYTHON' ] [ 'eins', 'zwei' ] true false true true
Gruppen
Ergebnis
24.12.1999 24 12 1999 05 11 08.03.2025 mia bei beispiel
Alle Treffer durchlaufen
Ergebnis
a 1 0 b 22 3 c 333 7 [ [ 'x', '1' ], [ 'y', '2' ] ]
Methoden im Überblick
| Methode | Wirkung |
|---|---|
regex.test(text) | true/false |
text.match(regex) | Treffer oder null |
text.matchAll(regex) | Iterator über alle Treffer (braucht g) |
text.replace(regex, ersatz) | ersetzen (mit g alle) |
text.split(regex) | an Treffern aufteilen |
regex.exec(text) | Treffer mit Position (zustandsbehaftet bei g) |
Ergebnis
[ 'a', 'b', 'c', 'd' ] Hallo Welt preis: 10€, 20€
Gierig oder sparsam
Ergebnis
<b>fett</b> und <i>kursiv</i> [ '<b>', '</b>', '<i>', '</i>' ]
Ein ? hinter dem Quantor macht ihn sparsam (so wenig wie möglich).
Lookahead
Ergebnis
true 100 [ '12' ]
Merke
- Regex:
/muster/flags;galle,iohne Groß/Klein,mmehrzeilig test,match,matchAll,replace,splitsind die Hauptwerkzeuge- Gruppen
( )und benannte Gruppen(?<name> )holen Teile heraus ?nach Quantor macht ihn sparsam- Sonderzeichen mit
\maskieren, Muster lesbar halten
Aufgabe
Schreibe einen Ausdruck, der alle Hashtags (#wort) aus einem Text zieht, und einen, der prüft, ob ein Text eine Uhrzeit im Format HH:MM ist.