Zeichengruppen in regulären Ausdrücken von Python
Es gibt spezielle Befehle, die es erlauben,
sofort ganze Gruppen von Zeichen auszuwählen.
Der Befehl \d bedeutet eine Ziffer
von 0 bis 9. Der Befehl \w
bezeichnet eine Ziffer, einen lateinischen Buchstaben oder das Unterstrichsymbol.
Der Befehl \s bezeichnet
ein Leerzeichen oder Leerzeichenzeichen: Leerzeichen,
Zeilenvorschub, Tabulator.
Man kann die Bedeutung des Befehls umkehren,
indem man einen Großbuchstaben schreibt:
z. B. wenn \d - eine Ziffer ist, dann
\D - keine Ziffer.
Beispiel
Lassen Sie uns alle Ziffern finden:
txt = '1 12 123'
res = re.sub('\d', '!', txt)
print(res)
Ergebnis der Codeausführung:
'! !! !!!'
Beispiel
Wiederholungsoperatoren betrachten die Gruppenbefehle
als ein Ganzes, das heißt, gruppierende Klammern
sind nicht nötig. Im folgenden Beispiel sieht das Suchmuster
so aus: Ziffer von 0 bis
9 ein- oder mehrmals:
txt = '1 12 123 abc @@@'
res = re.sub('\d+', '!', txt)
print(res)
Ergebnis der Codeausführung:
'! ! ! abc @@@'
Beispiel
Im folgenden Beispiel sieht das Suchmuster
so aus: alles beliebige ein- oder mehrmals,
aber keine Ziffer von 0 bis 9:
txt = '123abc3@@'
res = re.sub('\D+', '!', txt)
print(res)
Ergebnis der Codeausführung:
'123!3!'
Beispiel
In diesem Beispiel sieht das Suchmuster so aus: Leerzeichenzeichen einmal:
txt = '1 12 123 abc @@@'
res = re.sub('\s', '!', txt)
print(res)
Ergebnis der Codeausführung:
'1!12!123!abc!@@@'
Beispiel
In diesem Beispiel sieht das Suchmuster
so aus: KEIN Leerzeichenzeichen ein- oder mehrmals
. Alle Teilzeichenketten, die durch
Leerzeichen getrennt sind, werden durch '!' ersetzt:
txt = '1 12 123 abc @@@'
res = re.sub('\S+', '!', txt)
print(res)
Ergebnis der Codeausführung:
'! ! ! ! !'
Beispiel
In diesem Beispiel sieht das Suchmuster
so aus: Ziffer oder Buchstabe ein- oder mehrmals
. Alle Teilzeichenketten, die aus Ziffern
und Buchstaben bestehen, werden durch '!' ersetzt:
txt = '1 12 123a Abc @@@'
res = re.sub('\w+', '!', txt)
print(res)
Ergebnis der Codeausführung:
'! ! ! ! @@@'
Beispiel
In diesem Beispiel sieht das Suchmuster
so aus: KEINE Ziffer und KEIN Buchstabe ein- oder mehrmals
. Auf diese Definition treffen in unserem
Fall '@@@' und alle Leerzeichen
zu (sie sind schließlich auch keine Ziffern und keine Buchstaben).
Achten Sie darauf, dass am Ende ein
'!' steht - darin wurde die Zeichenkette
' @@@' - mit einem Leerzeichen davor - umgewandelt:
txt = '1 12 123 Abc @@@'
res = re.sub('\W+', '!', txt)
print(res)
Ergebnis der Codeausführung:
'1!12!123!Abc!'
Praktische Aufgaben
Gegeben sei die Zeichenkette:
txt = 'a1a a2a a3a a4a a5a aba aca'
Schreiben Sie einen regulären Ausdruck, der die Zeichenketten findet,
in denen an den Rändern die Buchstaben 'a' stehen,
und dazwischen eine Ziffer.
Gegeben sei die Zeichenkette:
txt = 'a1a a22a a333a a4444a a55555a aba aca'
Schreiben Sie einen regulären Ausdruck, der die Zeichenketten findet,
in denen an den Rändern die Buchstaben 'a' stehen,
und dazwischen eine beliebige Anzahl von Ziffern.
Gegeben sei die Zeichenkette:
txt = 'aa a1a a22a a333a a4444a a55555a aba aca'
Schreiben Sie einen regulären Ausdruck, der die Zeichenketten findet,
in denen an den Rändern die Buchstaben 'a' stehen,
und dazwischen eine beliebige Anzahl von Ziffern (einschließlich
null Ziffern, also die Zeichenkette
'aa').
Gegeben sei die Zeichenkette:
txt = 'avb a1b a2b a3b a4b a5b abb acb'
Schreiben Sie einen regulären Ausdruck, der die Zeichenketten
folgender Art findet: an den Rändern stehen die Buchstaben
'a' und 'b', und dazwischen -
weder eine Zahl noch ein Leerzeichen.
Gegeben sei die Zeichenkette:
txt = 'ave a#b a2b a$b a4b a5b a-b acb'
Schreiben Sie einen regulären Ausdruck, der die Zeichenketten
folgender Art findet: an den Rändern stehen die Buchstaben
'a' und 'b', und dazwischen -
kein Buchstabe, keine Ziffer und kein Leerzeichen.
Gegeben sei die Zeichenkette:
txt = 'ave a#a a2a a$a a4a a5a a-a aca'
Schreiben Sie einen regulären Ausdruck, der alle
Leerzeichen durch '!' ersetzt.