Wenn ich eine Zeichenfolge wie folgt:Wie wird der gesamte Text zwischen den äußeren Klammern in einer Zeichenfolge entfernt?
s1 = 'stuff(remove_me)'
ich leicht die Klammern und den Text in mit
# returns 'stuff'
res1 = re.sub(r'\([^)]*\)', '', s1)
here wie erklärt entfernen können.
Aber ich stoßen manchmal verschachtelte Ausdrücke wie folgt aus:
s2 = 'stuff(remove(me))'
Wenn ich den Befehl von oben laufen, ich am Ende mit
'stuff)'
ich auch versucht:
re.sub('\(.*?\)', '', s2)
Das gibt mir die gleiche Ausgabe.
Wie kann ich alles innerhalb der äußeren Klammern - einschließlich der Klammern selbst - entfernen, so dass ich auch mit 'stuff'
enden (was für beliebig komplexe Ausdrücke funktionieren sollte)?
Check [* Entfernen Text zwischen() und \ [\] in Python *] (http: //stackoverflow.com/a/14598135/3832970). –
@ WiktorStribiżew: Danke! Aber das sind Ausdrücke, die nicht verschachtelt sind. Und ich bin mir ziemlich sicher, dass es etwas gibt, das nicht viele If-else-Klauseln und eine For-Schleife benötigt. – Cleb
Diese [Antwort] (http://stackoverflow.com/a/12280660/3832970) enthält die Regex, die Sie benötigen, aber Sie benötigen ein PyPi Regex-Modul. –