Zeichensätze in regulären Ausdrücken von Python
Die Zeichengruppen \d und \w sind nicht
sehr flexibel. Selbst eine so einfache Aufgabe wie
alle Buchstaben, aber keine Ziffern finden -
kann von ihnen nicht gelöst werden. Für solche Aufgaben
sollten eckige Klammern verwendet werden,
die die Operation 'oder' darstellen.
Eckige Klammern ersetzen ein
Zeichen, eines der darin aufgeführten. Zum
Beispiel so: x[abc]x - wir
sagen, dass an den Rändern die Buchstaben
'x' stehen müssen, und innen - ein Zeichen: entweder 'a',
oder 'b', oder 'c'.
Nach eckigen Klammern können
Wiederholungsoperatoren geschrieben werden. Zum
Beispiel so:
x[abc]+x - wir sagen, dass innerhalb
der 'x' eine beliebige Anzahl von Zeichen
'a', 'b' und 'c' - in
beliebigen Kombinationen stehen kann.
Man kann nicht nur Zeichen auflisten, sondern
auch Zeichengruppen erstellen, indem man zwischen
zwei Zeichen einen Bindestrich schreibt. Zum
Beispiel so:
[a-d] - wir erhalten alle Zeichen von
'a' bis 'd'.
Schauen wir uns Beispiele an.
Beispiel
In diesem Beispiel sieht das Suchmuster
so aus: zwischen 'x' ein beliebiger Buchstabe von
'a' bis 'z':
Ergebnis der Codeausführung:
'! ! ! x@x'
Beispiel
In diesem Beispiel sieht das Suchmuster
so aus: zwischen 'x' ein beliebiger Buchstabe von
'a' bis 'k':
txt = 'xax xbx xmx x@x'
res = re.sub('x[a-k]x', '!', txt)
print(res)
Ergebnis der Codeausführung:
'! ! xmx x@x'
Beispiel
In diesem Beispiel sieht das Suchmuster
so aus: zwischen 'x' ein beliebiger Buchstabe von
'A' bis 'Z':
txt = 'xax xBx xcx x@x'
res = re.sub('x[A-Z]x', '!', txt)
print(res)
Ergebnis der Codeausführung:
'xax ! xcx x@x'
Beispiel
In diesem Beispiel sieht das Suchmuster
so aus: zwischen 'x' eine beliebige Ziffer von 0
bis 9:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[0-9]x', '!', txt)
print(res)
Ergebnis der Codeausführung:
'xax ! ! ! x@x'
Beispiel
In diesem Beispiel sieht das Suchmuster
so aus: zwischen 'x' eine beliebige Ziffer von 3
bis 7:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[3-7]x', '!', txt)
print(res)
Ergebnis der Codeausführung:
'xax x1x ! ! x@x'
Beispiel
In diesem Beispiel sieht das Suchmuster
so aus: zwischen 'x' ein beliebiger Buchstabe von
'a' bis 'z' oder eine Ziffer von
1 bis 9:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[a-z1-9]x', '!', txt)
print(res)
Ergebnis der Codeausführung:
'! ! ! ! x@x'
Beispiel
In diesem Beispiel sieht das Suchmuster
so aus: zwischen 'x' ein beliebiger Buchstabe von
'a' bis 'z' oder ein Buchstabe von
'A' bis 'Z':
txt = 'xax xBx xcx x5x x@x'
res = re.sub('x[a-zA-Z]x', '!', txt)
print(res)
Ergebnis der Codeausführung:
'! ! ! x5x x@x'
Beispiel
In diesem Beispiel sieht das Suchmuster
so aus: zwischen 'x' ein beliebiger Buchstabe von
'a' bis 'z' oder die Ziffern 1,
2:
txt = 'xax xbx x1x x2x x3x'
res = re.sub('x[a-z12]x', '!', txt)
print(res)
Ergebnis der Codeausführung:
'! ! ! ! x3x'
Beispiel
In diesem Beispiel sieht das Suchmuster
so aus: zwischen 'x' Buchstaben von 'a'
bis 'z' in einer Anzahl von 1 und
mehr:
txt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]+x', '!', txt)
print(res)
Ergebnis der Codeausführung:
'xx ! ! ! x123x xa3x'
Beispiel
Lassen Sie uns bewirken, dass die Anzahl der Buchstaben auch Null sein kann:
txt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]*x', '!', txt)
print(res)
Als Ergebnis erhalten wir:
'! ! ! ! x123x xa3x'
Beispiel
Innerhalb der eckigen Klammern können auch escapete Zeichen angegeben werden. Lassen Sie uns Folgen von Buchstaben und Ziffern finden, die sich null oder mehr Mal wiederholen:
txt = 'xx x@x xadx xas12x xa3x'
res = re.sub('x[a-z\d]*x', '!', txt)
print(res)
Ergebnis der Codeausführung:
'! x@x ! ! !'
Beispiel
Wenn wir noch weitere eckige Klammern angeben müssen, müssen auch diese zwingend escaped werden:
txt = 'xx xrx xas[]x x3x'
res = re.sub('x[a-z\[\]]*x', '!', txt)
print(res)
Ergebnis der Codeausführung:
'! ! ! x3x'
Praktische Aufgaben
Gegeben ist ein String:
txt = 'aba aea aca aza axa'
Schreiben Sie einen regulären Ausdruck, der nach
folgendem Muster sucht: an den Rändern stehen die Buchstaben
'a', und dazwischen - der Buchstabe 'b',
'e' oder 'x'.
Gegeben ist ein String:
txt = 'a1a a3a a7a a9a aba'
Schreiben Sie einen regulären Ausdruck, der nach
folgendem Muster sucht: an den Rändern stehen die Buchstaben
'a', und dazwischen - eine Ziffer von
3 bis 6.
Gegeben ist ein String:
txt = 'aba aea afa aha aga'
Schreiben Sie einen regulären Ausdruck, der nach
folgendem Muster sucht: an den Rändern stehen die Buchstaben
'a', und dazwischen - ein Buchstabe von
'a' bis 'g'.
Gegeben ist ein String:
txt = 'aba aea afa aha aga'
Schreiben Sie einen regulären Ausdruck, der nach
folgendem Muster sucht: an den Rändern stehen die Buchstaben
'a', und dazwischen - ein Buchstabe von
'a' bis 'f' und von 'j'
bis 'z'.
Gegeben ist ein String:
txt = 'aAa aea aEa aJa a3a'
Schreiben Sie einen regulären Ausdruck, der nach
folgendem Muster sucht: an den Rändern stehen die Buchstaben
'a', und dazwischen - ein Buchstabe von
'a' bis 'f' und von 'A'
bis 'D'.
Gegeben ist ein String:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Schreiben Sie einen regulären Ausdruck, der nach
folgendem Muster sucht: an den Rändern stehen die Buchstaben
'a', und dazwischen - kleine
lateinische Buchstaben, ohne die anderen zu berühren.
Gegeben ist ein String:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Schreiben Sie einen regulären Ausdruck, der nach
folgendem Muster sucht: an den Rändern stehen die Buchstaben
'a', und dazwischen - kleine und
große lateinische Buchstaben, ohne die
anderen zu berühren.
Gegeben ist ein String:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Schreiben Sie einen regulären Ausdruck, der nach
folgendem Muster sucht: an den Rändern stehen die Buchstaben
'a', und dazwischen - kleine
lateinische Buchstaben und Ziffern, ohne die
anderen zu berühren.