python re.X versus automagische Zeilenfortsetzung

8

Python bietet eine Markierung ( re.X oder re.VERBOSE ), die zulässig ist Annotation regulärer Ausdrücke:

%Vor%

Mit der automatischen String-Verkettung könnten Sie jedoch grundsätzlich dasselbe erreichen:

%Vor%

Ich glaube nicht, dass ich die letztgenannte Form wirklich benutzt habe, aber (IMHO) macht es einen leichter lesbaren Regex (ich muss nicht herausfinden, welcher Whitespace maskiert wurde und was Leerzeichen werden ignoriert ... etc. etc.) und meine Kommentare werden von meinem Texteditor als Kommentare formatiert. Gibt es einen Grund, ersteres dem letzteren oder Visa-Vers vorzuziehen? Oder ist das wirklich ein Tomaten-Tomaten-Problem?

    
mgilson 08.02.2013, 14:38
quelle

2 Antworten

4

Ersteres kann in eine eigene Textdatei geschrieben und dann ohne Rückgriff auf literal_eval geladen werden. Mit komplizierten REs (oder einer Auswahl von mehreren verschiedenen REs), das kann ein Vorteil sein.

    
Fred Foo 08.02.2013, 14:41
quelle
3

Ich würde sagen, es ist Tomaten-Tomahto. Das Flag "x" für den regulären Ausdruck ist nicht exklusiv für Python und kann in Sprachen, in denen die Verkettungsoperation ausführlicher ist, sinnvoller sein (stellen Sie sich vor, dass + überall zum Rauschen hinzugefügt wird).

Ich bedenke auch die Tatsache, dass es Sie dazu zwingt, richtig anzugeben, welcher Whitespace Teil des Ausdrucks ist, als eine positive Sache, da er jede Mehrdeutigkeit beseitigt und es schwierig macht, in Whitespaces enthaltene Rexes zu übersehen.

Ein letztes Argument ist, dass Sie das exakte Muster in eine andere Sprache kopieren können, die die gleiche Flagge hat, und es wird ohne viel Aufwand funktionieren. Im letzteren Fall müsste ich viele r s und Apostrophe entfernen.

Übrigens könnte man mit immer die Option re.X verketten.

    
Explosion Pills 08.02.2013 14:44
quelle

Tags und Links