Ich versuche, eine Reihe von Dateien zu bearbeiten, und ich muss dann ändern, um irrelevante Informationen in den Dateinamen zu entfernen; Vor allem versuche ich, den Text in Klammern zu entfernen. Zum Beispiel:Wie kann ich Text in Klammern mit einem Regex entfernen?
filename = "Example_file_(extra_descriptor).ext"
und ich möchte eine ganze Reihe von Dateien regex, wo der Klammerausdruck in der Mitte oder am Ende sein könnte, und variabler Länge.
Wie würde die Regex aussehen? Perl oder Python Syntax wäre bevorzugt.
Sind Sie sicher, dass der "extra_descriptor" kein ")" enthalten kann? Wenn es geht, wird das Problem viel schwieriger ... – dmckee
@dmckee: Es ist schwieriger, wenn die Parens * verschachtelt * werden können, obwohl wenn du nur alles zwischen dem ersten '(' und dem letzten ') loswerden willst nicht viel schwieriger: benutze einfach ein gieriges '. *' anstelle von '. *?'. –
@j_random_hacker Sie haben Recht, es ist verdammt viel schwieriger, da geschachtelte Klammern nicht mit einer FSM erkannt werden können (Sie müssen die Verschachtelungsebene, die unbegrenzt ist, verfolgen) und daher nicht durch eine Regex. Damit es möglich ist, müssen Sie sich auf eine begrenzte Verschachtelung beschränken. – skyking