- Vortrag: Andre Pietsch
- Metasprache zur Musterabfrage in Texten
- Regular Expressions abgekürzt als regex oder regexp
- Folge von Zeichen, die ein Übereinstimmungsmuster in Zeichenketten angeben. Z.B. bestimmte Zeichen oder Wörter.
- Muster werden von Algorithmen zum Suchen und Ersetzen von Zeichenketten oder zur Validierung von Eingaben verwendet.
XKCD Comic: http://xkcd.com/208/
- Auswahl der zu übereinstimmenden Zeichen.
- Festlegung von Start- und Endpunkten für den Abgleich.
- Bestimmen der Anzahl der Übereinstimmungen.
- Bestimmen der abzugleichenden Gruppen.
- Unabhängigkeit von einem Betriebssystem
\n
Entspricht einem Zeilenumbruch/Zeilenvorschub.\r
Entspricht einem Zeilenrücklauf.\t
Entspricht einem horizontalen Tabulator.\v
Entspricht einem vertikalen Tabulator.\f
Entspricht einem neuen Seiten-/Formularvorschub.\
Umgehung des folgenden Zeichens
.
Passt auf jedes Zeichen außer Zeilenumbruch.\s
Passt auf alle Leerzeichen. [“ “, \t, \r, \n, \v und \f]\S
Passt auf alle Zeichen Nicht-Leerzeichen. [alle Zeichen außer „ “, \t, \r, \n, \v und \f]\d
Passt auf alle Ziffern. [0-9]\D
Passt auf alle Nicht-Ziffern. [alle Zeichen außer 0-9]\w
Stimmt mit allen Wortzeichen überein. [A-Z, a-z, 0-9 und _]\W
Trifft auf alle Nicht-Wort-Zeichen zu. [alle Zeichen außer A-Z, a-z, 0-9 und _]
?
Entspricht 0 oder 1 Vorkommen des vorangehenden Elements. [colou?r
entspricht sowohlcolor
als auchcolour
]*
Passt auf 0 oder mehr Vorkommen des vorangehenden Elements. [ab*c
entspricht sowohlac
,abc
,abbc
usw.]*?
Entspricht keinem oder mehreren Vorkommen des vorangehenden Elements, aber non-greedy.+
Entspricht einem oder mehreren Vorkommen des vorangehenden Elements. (ab+c
passt sowohl aufabc
,abbc
usw., aber nicht aufac
)+?
Entspricht einem oder mehreren Vorkommen des vorangehenden Elements, aber non-greedy.{n}
Trifft genaun
-mal auf das vorhergehende Element zu.{min,}
Entspricht dem vorangehenden Element mindestens bis zur Zahl vonmin
oder mehr.{,max}
Entspricht dem vorangehenden Element bis zur Zahl vonmax
.{min,max}
Entspricht dem vorangehenden Element mindestensmin
-mal, aber höchstensmax
-mal
** Greedy Matching /Gieriger Abgleich
Die Wiederholungszeichen *
und +
führen dazu dass die größtmögliche Zeichenkette gesucht wird. Daher bezeichnet diese Zeichen als "gierig"/"greedy".
Beispiel:
F.+,
matches “From here, to there,” in From here, to there, to everywhere
F.+?,
matches “From here,” in From here, to there, to everywhere
[abc]
Passt auf ein einzelnes Zeichen, das sich innerhalb der Klammern befindet. (in diesem Beispiela
oderb
oderc
)[^abc]
Passt auf ein einzelnes Zeichen, das nicht in den Klammern enthalten ist. [in diesem Beispiel alles außera
oderb
oderc
][A-Z]
Passt auf ein einzelnes Zeichen im Bereich von A bis Z. [A
oderB
oder ... oderZ
][a-z]
Passt auf ein einzelnes Zeichen im Bereich von a bis z. [a
oderb
oder ... oderz
][0-9]
Passt auf ein einzelnes Zeichen im Bereich von 0 bis 9. [0
oder1
oder ... oder9
][A-Za-z0-9]
Passt auf ein einzelnes Zeichen im Bereich von A bis Z, a bis z oder 0 bis 9. [A
oderB
oder ... odera
oderb
oder ... oder0
oder1
oder ... oder9
]
^
Matched den Anfang einer Zeichenkette und auf jede neue Zeile.$
Matched auf das Ende einer Zeichenkette und auf jede neue Zeile.\b
Stimmt mit einer Wortgrenze überein. [\bcat\b
passt zucat
als einzelnes Wort, aber nicht inconcatination
]\B
Passt auf eine Nicht-Wort-Grenze. [\Bcat\B
passt auf „cat“ inconcatination
, aber nicht als einzelnes Wortcat
]\G
Entspricht dem Startpunkt einer Suche und der Position, an der die vorherige erfolgreiche Suche endete. Nützlich für Iterationen.
(a|b)
Entspricht a oder b. (Boolesches ODER).(…)
Gibt eine erfassende Gruppe/einen erfassenden Ausdruck an (ersetzen Sie „...“ durch einen regulären Ausdruck).(?:…)
Bezeichnet eine passive, nicht erfassende Gruppe/einen nicht erfassenden Ausdruck (ersetzen Sie „...“ durch einen regulären Ausdruck).$n | \n
Rückverweis auf die n-te erfassende Gruppe.$2 | \2
Rückverweis auf die 2. erfassende Gruppe. [„xyz“ in^(abc)(xyz)$
]$1 | \1
Rückverweis auf die 1. Erfassungsgruppe. [„xyz“ in^(?:abc)(xyz)$
]
?=
Positive Lookahead [\d(?=abc)
findet eine Ziffer, die direkt von „abc“ gefolgt wird, z. B.1
in „1abc2abc“]?!
Negative Lookahead [\d(?!abc)
findet eine Ziffer, die nicht direkt von „abc“ gefolgt wird, z. B.2
in „1abc2def“]?<=
Positive Lookbehinds [(?<=abc)\d
findet eine Ziffer, der ein „abc“ direkt vorausgeht, z. B. 1 in „abc1abc2“]?<!
Negative Lookbehinds [(?<!abc)\d
findet eine Ziffer, die nicht direkt vor „abc“ steht, z. B. 2 in „abc1def2“]
[:upper:]
Entspricht allen Großbuchstaben (entspricht[A-Z]
).[:lower:]
Entspricht allen Kleinbuchstaben (entspricht[a-z]
).[:alpha:]
Entspricht allen Buchstaben (entspricht[A-Za-z]
).[:digit:]
Entspricht allen Ziffern (entspricht[0-9]
).[:alnum:]
Entspricht allen Buchstaben und Ziffern (entspricht[A-Za-z0-9]
).[:punct:]
Entspricht allen Interpunktionszeichen. [zum Beispiel!
,“
,#
,$
,%
,&
,*
,+
,-
, usw.][:blank:]
Passt auf Leerzeichen (\t
).[:space:]
Passt auf alle nicht sichtbaren Zeichen. [\t
,\r
,\n
,\v
und\f
][:word:]
Passt auf alle Wortzeichen (entspricht\w
).
Websites mit guten Übungen. RegEx Golf - https://alf.nu/RegexGolf RegEx Sketch Engine (Exercises) - https://regex.sketchengine.eu/basic-exercises.html RegEx Tutorials (Exercises) - http://regextutorials.com/excercise.html
- MS Word
- Suchen und Ersetzen als abgespeckte Version von regulären Ausdrücken mit einer Menge seltsamer oder anderer Syntax als der gerade vorgestellten Syntax.
- MS Excel
- Funktionen: REGEXTEST, REGEXEXTRACT und REGEXREPLACE, aber nur mit Microsoft 365 und als Beta-Funktionen
- Browser-Suche (über Addons) z.B Brave
- Batch-Umbenennungs-Tools z.B Advanced Renamer
- Apps für Notizen z.B Obsidian
Python-Pandas Ein Beispiel: Erstellen einer Reihe neuer Spalten aus einer gegebenen Spalte unter Verwendung regulärer Ausdrücke mit
`df['column'].str.extract('regular_expression')`
Python re Modul für die Arbeit mit regulären Ausdrücken in Python, das Ihnen einen variablen Satz von Funktionen für die Arbeit mit Text in Python bietet. Es verwendet die vorgestellte Syntax.
importieren re
Importiert das re-Modul.
re.search()
Prüft, ob eine Zeichenkette mit einem regulären Ausdruck übereinstimmt, ähnlich wie die Methode find()
für Zeichenketten. Sie gibt True oder False zurück.
re.findall()
Extrahiert Teile einer Zeichenkette, die mit einem regulären Ausdruck übereinstimmen. Gibt eine Liste von Strings oder Tupeln zurück.
RegEx Cheatsheet on Cheatography.com: https://cheatography.com/davechild/cheat-sheets/regular-expressions/
RegEx Golf https://alf.nu/RegexGolf
RegEx Sketch Engine https://regex.sketchengine.eu/index.html
RegEx Tutorials http://regextutorials.com/
regex101 https://regex101.com/