Ich bemerke ein seltsames Verhalten in Pythons Regex-Bibliothek, und ich bin mir nicht sicher, ob ich etwas falsch mache.Fehler in Python Regex? (re mit re.MULTILINE)
Wenn ich eine Regex über re.sub()
mit re.MULTILINE
laufen lasse. Es scheint nur die ersten Vorkommen zu ersetzen. Es ersetzt alle Vorkommen, wenn ich re.MULTILINE
ausschalte, re.subn(..., count = 0, flags = re.MULTILINE)
verwende oder die Regex mit re.compile(..., re.MULTILINE)
kompiliere.
Ich benutze Python 2.7 auf Ubuntu 12.04.
Ich habe ein willkürliches Beispiel auf posted:
- Pastebin.com - Ausgabe von Terminal
- codepad - Script, das Verhalten bestätigt (außer re.subn(), die auf 2,5 unterscheidet)
Kann jemand dieses Verhalten auf seinem Rechner bestätigen/leugnen?
EDIT: Realisiert sollte ich weitermachen und dies auf dem Python-Bug-Tracker veröffentlichen. EDIT 2: Ausgabe berichtet: http://bugs.python.org/msg168909
Ah, nun, das erklärt es haha. Ich habe das Problem geschlossen. Vielen Dank! – eacousineau
Ich benutzte 're.I' ohne' flags = 'für eine geraume Zeit und wusste das nicht. Docs warnen Sie nicht vor solchen Verhaltensweisen, die ich für einen schwerwiegenden Fehler halte. Ich erinnere mich nicht einmal daran, dass jemand explizit 'flags' und' count' verwendet hat. – minerals
@minerals: wenn Sie auf den Link in der Antwort klicken; Sie sollten die Funktionssignatur 're (pattern, repl, string, count = 0, flags = 0) sehen und die Dokumentation erklärt, was der Parameter' count' bedeutet. – jfs