Geschweifte Klammern in regulären Ausdrücken von Python
Die Operatoren '+', '*', '?'
sind gut, jedoch kann mit ihnen nicht eine
konkrete Anzahl von Wiederholungen angegeben werden. In diesem Fall
wird dir der Operator {} helfen.
Er funktioniert wie folgt: {5}
- fünf Wiederholungen, {2,5} – wird
zweimal bis fünfmal wiederholt (beide inklusive), {2,}
- wird zweimal oder öfter wiederholt. Sieh dir die
Beispiele an:
Beispiel
In diesem Beispiel sieht das Suchmuster
so aus: Buchstabe 'x', Buchstabe 'a'
ein- oder zweimal, Buchstabe 'x':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{1,2}x', '!', txt)
print(res)
Ergebnis der Codeausführung:
'xx ! ! xaaax'
Beispiel
In diesem Beispiel sieht das Suchmuster
so aus: Buchstabe 'x', Buchstabe 'a'
zweimal oder öfter, Buchstabe 'x':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{2,}x', '!', txt)
print(res)
Ergebnis der Codeausführung:
'xx xax ! !'
Beispiel
In diesem Beispiel sieht das Suchmuster
so aus: Buchstabe 'x', Buchstabe 'a'
dreimal, Buchstabe 'x':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{3}x', '!', txt)
print(res)
Ergebnis der Codeausführung:
'xx xax xaax !'
Beispiel
In diesem Beispiel sieht das Suchmuster
so aus: Buchstabe 'a' zehnmal:
txt = 'aaa aaaaaaaaaa aaa'
res = re.sub('a{10}', '!', txt)
print(res)
Ergebnis der Codeausführung:
'aaa ! aaa'
Beispiel
In diesem Beispiel gibt es ein solches Muster: Buchstabe
'x', Buchstabe 'a' dreimal oder weniger,
Buchstabe 'x'. Um dies
zu realisieren, kann vor der Zahl 3
keine Zahl angegeben werden, sondern einfach ein
Komma gesetzt werden:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{,3}x', '!', txt)
print(res)
Ergebnis der Codeausführung:
'! ! ! !'
Beispiel
Eine Null vor 3 ist ebenfalls erlaubt:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{0,3}x', '!', txt)
print(res)
Ergebnis der Codeausführung:
'! ! ! !'
Praktische Aufgaben
Gegeben ist ein String:
txt = 'aa aba abba abbba abbbba abbbbba'
Schreiben Sie einen regulären Ausdruck, der die Strings
'abba', 'abbba', 'abbbba'
und nur diese findet.
Gegeben ist ein String:
txt = 'aa aba abba abbba abbbba abbbbba'
Schreiben Sie einen regulären Ausdruck, der Strings
der Art 'aba' findet, in denen 'b'
weniger als 3 Mal (inklusive) vorkommt.
Gegeben ist ein String:
txt = 'aa aba abba abbba abbbba abbbbba'
Schreiben Sie einen regulären Ausdruck, der Strings
der Art 'aba' findet, in denen 'b'
mehr als 4 Mal (inklusive) vorkommt.