Hallo, ich moechte eigentlich "ganz normal" das Modul re benutzen, um Teile von Strings zu erkennen und zu entfernen, muss dabei aber irgendwo einen Denkfehler machen. Anders kann ich mir das Verhalten unten nicht erklaeren. Vielleicht hat jemand hier eine zuendende Idee? In der letzten Zeile wuerde ich eigentlich folgendes Ergebnis erwar- ten: ['START bar \n END'] Python 2.4 (#1, Feb 7 2005, 21:41:21)
import re
re.findall(re.compile("START.*END"), "foo START bar END foobar")
['START bar END']
re.findall(re.compile("START.*END", re.X), "foo START bar \n END
foobar") []
Gruss, Dinu _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
ich moechte eigentlich "ganz normal" das Modul re benutzen, um Teile von Strings zu erkennen und zu entfernen, muss dabei aber irgendwo einen Denkfehler machen. Anders kann ich mir das Verhalten unten nicht erklaeren. Vielleicht hat jemand hier eine zuendende Idee?
Aus TFM: """ S DOTALL Make the "." special character match any character at all, including a newline; without this flag, "." will match anything except a newline. """
re.findall(re.compile("START.*END", re.X | re.S), "foo START bar \n END foobar") ['START bar \n END']
Diez _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
Diez B. Roggisch:
S DOTALL Make the "." special character match any character at all, including a newline; without this flag, "." will match anything except a newline.
Huh... und ich haette schwoeren koennen, X waere identisch mit DOTALL. Naechstes mal also: try: ... except BaumVorWaldNichtSehenWollenError: probiere_offensichtliche_alternative() # hier re.DOTALL Danke, Dinu _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
Dinu Gherman <gherman@darwin.in-berlin.de> writes:
re.findall(re.compile("START.*END"), "foo START bar END foobar") ['START bar END']
re.findall(re.compile("START.*END", re.X), "foo START bar \n END foobar") []
re.compile("START.*END", re.S).findall("foo START bar \n END foobar") ['START bar \n END']
Ohne die Option re.S passt "." nicht auf ein Newline. Bernhard -- Intevation GmbH http://intevation.de/ Skencil http://skencil.org/ Thuban http://thuban.intevation.org/ _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
participants (3)
-
Bernhard Herzog
-
Diez B. Roggisch
-
Dinu Gherman