⊗pyPmREHHy 47 of 129 menu

Der Bindestrich innerhalb von Zeichensätzen in Python Regex

Der Bindestrich ist auch ein Sonderzeichen innerhalb von [ ] (außerhalb jedoch nicht). Wenn Sie den Bindestrich selbst als Symbol benötigen - dann setzen Sie ihn dorthin, wo er nicht als Trennzeichen einer Gruppe interpretiert wird.

Warum das wichtig ist: Sie können eine Zeichengruppe erstellen, ohne es zu merken. Zum Beispiel so - '[:-@]' - Sie denken, Sie wählen Doppelpunkt, Bindestrich und At-Zeichen aus, aber in Wirklichkeit ergibt sich eine Zeichengruppe zwischen : und @. Zu dieser Gruppe gehören folgende Zeichen: ? < = > :

Woher kommen sie? Aus der ASCII-Tabelle - der Doppelpunkt hat eine niedrigere Nummer als das At-Zeichen - und so ergibt sich eine Gruppe. Das heißt, alle Gruppen ergeben sich gemäß der ASCII-Tabelle (bei Bedarf kann man dies nutzen).

Wie man damit umgeht: Setzen Sie das Symbol Bindestrich dorthin, wo er definitiv nicht als Gruppensymbol interpretiert wird, zum Beispiel an den Anfang oder ans Ende (also nach [ oder vor ]).

Man kann den Bindestrich auch maskieren - dann wird er unabhängig von der Position sich selbst bedeuten. Zum Beispiel, anstelle von [:-@] [:\-@] schreiben - und es gibt keine Gruppe mehr, sondern drei Zeichen - Doppelpunkt, Bindestrich und At-Zeichen @.

Beispiel

Im folgenden Beispiel ist das Suchmuster wie folgt: Ziffer 1, dann Buchstabe von 'a' bis 'z', dann Ziffer 2:

txt = '1a2 1-2 1c2 1z2' res = re.sub('1[a-z]2', '!', txt) print(res)

Ergebnis der Codeausführung:

'! 1-2 ! !'

Beispiel

Lassen Sie uns nun den Bindestrich maskieren. Das Suchmuster ist nun: Ziffer 1, dann Buchstabe 'a', oder Bindestrich, oder Buchstabe 'z', dann Ziffer 2:

txt = '1a2 1-2 1c2 1z2' res = re.sub('1[a\-z]2', '!', txt) print(res)

Ergebnis der Codeausführung:

'! ! 1c2 !'

Beispiel

Man kann den Bindestrich einfach umstellen, ohne ihn zu maskieren:

txt = '1a2 1-2 1c2 1z2' res = re.sub('1[az-]2', '!', txt) print(res)

Ergebnis der Codeausführung:

'! ! 1c2 !'

Beispiel

Im folgenden Beispiel ist das Suchmuster wie folgt: das erste Zeichen ist ein Kleinbuchstabe oder ein Bindestrich '-', dann zwei Buchstaben 'x':

txt = 'axx Axx -xx @xx' res = re.sub('[a-z-]xx', '!', txt) print(res)

Ergebnis der Codeausführung:

'! Axx ! @xx'

Beispiel

Im folgenden Beispiel ist das Suchmuster wie folgt: das erste Zeichen ist ein Kleinbuchstabe, Großbuchstabe oder Bindestrich '-', dann zwei Buchstaben 'x':

txt = 'axx Axx -xx @xx' res = re.sub('[a-zA-Z-]xx', '!', txt) print(res)

Ergebnis der Codeausführung:

'! ! ! @xx'

Beispiel

Man kann den Bindestrich zwischen zwei Gruppen platzieren - dort wird er definitiv keine weitere Gruppe erstellen:

txt = 'axx 9xx -xx @xx' res = re.sub('[a-z-0-9]xx', '!', txt) print(res)

Ergebnis der Codeausführung:

'! ! ! @xx'

Praktische Aufgaben

Gegeben ist ein String:

txt = 'xaz xBz xcz x-z x@z'

Finden Sie alle Strings nach folgendem Muster: Buchstabe 'x', Groß- oder Kleinbuchstabe oder Bindestrich, Buchstabe 'z'.

Gegeben ist ein String:

txt = 'xaz x$z x-z xcz x+z x%z x*z'

Finden Sie alle Strings nach folgendem Muster: Buchstabe 'x', dann entweder Dollar, Bindestrich oder Plus, dann Buchstabe 'z'.

Deutsch
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wir verwenden Cookies für den Betrieb der Website, Analyse und Personalisierung. Die Datenverarbeitung erfolgt gemäß der Datenschutzerklärung.
alle akzeptieren anpassen ablehnen