Kapitel 13
Verarbeitung von Zeichenketten
378
Abb. 13.4: Regulärer Ausdruck als Filter für Strings
13.5.1 Aufbau eines regulären Ausdrucks
Mithilfe von Sonderzeichen und speziellen Zeichensequenzen kann man komplexe Muster
definieren. Tabelle 13.9 liefert einen Überblick. Reguläre Ausdrücke sind im Wesentlichen
aus folgenden Elementen aufgebaut:
Einfache Zeichen, die für sich selbst stehen, z.B. a
Platzhalter für Zeichen aus einer Zeichenmenge, z.B. \d für eine Ziffer oder \D für ein
Zeichen, das keine Ziffer ist
Operatoren, mit denen aus einem oder mehreren regulären Ausdrücken ein neuer regu-
lärer Ausdruck gebildet wird, z.B.
+ für ein- oder mehrfache Wiederholung eines regu-
lären Ausdrucks
Sonderzeichen Bedeutung/Beispiel
. Jedes Zeichen außer Zeilenwechsel (\n).
'G.ld' passt auf 'Gold' und 'Geld'.
^ Beginn eines Strings oder das erste Zeichen nach \n.
'^S' passt auf 'Start' nicht aber auf 'der Start'.
[ ] Definition einer Menge von Zeichen. Zum Beispiel bezeichnet '[abc]'
ein Zeichen aus der Menge
{a, b, c}.
[^ ] Komplement einer Zeichenmenge. Zum Beispiel steht [^aeiouAEIOU]
für ein beliebiges Zeichen, das kein Vokal ist.
* Beliebig häufiges (eventuell keinmaliges) Wiederholen des vorausgehen-
den regulären Ausdrucks
+ Ein- oder mehrmaliges Wiederholen des vorausgehenden regulären
Ausdrucks
Tabelle 13.9: Die wichtigsten Sonderzeichen in regulären Ausdrücken
379
13.5
Reguläre Ausdrücke
Platzhalter für Zeichen aus einer Zeichenmenge
Ein Punkt . steht für genau ein beliebiges Zeichen. Der reguläre Ausdruck 'G.ld' beschreibt
die Menge aller Zeichenketten, die einen String enthalten, der folgendermaßen aufgebaut
ist: Ein G, gefolgt von einem beliebigen Zeichen und dahinter
ld. Der reguläre Ausdruck
'G.ld' passt also auf 'Gold', 'Geld' oder 'Gilde'.
Mit eckigen Klammern wird ein Zeichen beschrieben, das zu einer Menge von Zeichen
gehört. Zwischen den Klammern stehen die Elemente der Menge als String. Die Zeichen
können einzeln aufgelistet werden oder man definiert einen Bereich durch zwei Zeichen
und einem Minuszeichen '-' dazwischen. So ist der String 'a-z' eine Kurzschreibweise
für
'abcdefghijklmnopqrstuvwxyz'und '1-5' eine Kurzform für '12345'. Beispiel:
Der reguläre Ausdruck
0[0-7][0-7] passt auf alle dreistelligen Oktalzahlen, die mit einer
Null beginnen, z.B. 025.
Steht hinter der öffnenden Klammer ein Dach ^, so wird das Komplement der durch den fol-
genden String dargestellten Zeichenmenge gebildet. Mit
[^0-9] wird beispielsweise ein
Zeichen beschrieben, das keine Ziffer ist.
Bestimmte »Zeichentypen« können durch Sequenzen dargestellt werden, die mit einem
Backslash beginnen. So bezeichnet
\d eine Dezimalziffer oder \w ein alphanumerisches
Zeichen einschließlich Unterstrich (das entspricht
[a-zA-Z0-9_]). Der reguläre Ausdruck
'\d\d\d' passt auf alle Strings, die eine dreistellige Dezimalzahl enthalten.
*?, +? »Nicht gierige« Variante des Stern- bzw. Plusoperators. Die Verwendung
bei
findall() führt zum Finden der kürzesten passenden Textstellen
(siehe
Abschnitt 13.5.4).
? Null- oder einmaliges Auftreten des vorhergehenden regulären
Ausdrucks.
\ Maskieren eines Sonderzeichens
\A Beginn einer Zeichenkette.
'\AAuto' passt auf 'Autobahn', nicht aber auf 'Sie fuhr ein
rotes Auto'
.
\d Dezimalziffer, entspricht der Menge [0-9]
\D Alle Zeichen außer Dezimalziffern
\s Whitespace-Zeichen aus der Menge [ \t\n\r\f\v]
\S Alle Zeichen außer Whitespace-Zeichen
\w Irgendein alphanumerisches Zeichen aus [a-zA-Z0-9_]
\W
Irgendein nichtalphanumerisches Zeichen aus [^a-zA-Z0-9]
\Z Ende einer Zeichenkette
| oder
( ) Zeichengruppe
Sonderzeichen Bedeutung/Beispiel
Tabelle 13.9: Die wichtigsten Sonderzeichen in regulären Ausdrücken (Forts.)

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.