Seite 1 von 1

Regular expressions

Verfasst: Freitag 12. August 2005, 13:52
von alpha
Ich bins schon wieder :-)

noch ne schnelle Frage zu Wildcards.
Kann mir jemand sagen warum das:

Code: Alles auswählen

s = '\t\t\t\t<Parameter Vartype="VT_R4">Istsbc</Parameter>\n'
>>> ts = re.compile(r'(?<=>)[\w\s]*(?=</Parameter>)')
>>> xmlUnit = ts.findall(s)
>>> xmlUnit
['Istsbc']
funktioniert, und das

Code: Alles auswählen

>>> s = '\t\t\t\t<Parameter Vartype="VT_R4">Ist-sbc</Parameter>\n'
>>> ts = re.compile(r'(?<=>)[\w\s]*(?=</Parameter>)')
>>> xmlUnit = ts.findall(s)
>>> xmlUnit
[]
nicht???
Irgendwie mag er den - nicht.
Hätte bei Wildcards besser aufpassen sollen :oops:

Danke

Verfasst: Freitag 12. August 2005, 14:01
von mawe
Hi!

Naja, "-" ist bei \w nicht dabei. Kannst ja [\w\s-] nehmen. Oder gleich ".*" ?

Gruß, mawe

Verfasst: Freitag 12. August 2005, 14:44
von Leonidas
alpha, das sieht sehr nach meinem lustigen Regex zum Bekommen des Inhalts von Tag aus :D (einem meiner wenigen gelungenen).

Gut, mawe dass du .* erwähnst, genau das habe ich gebraucht! Ich habe den Regulären Ausdruck jetzt so ziemlich überall editiert, so dass dort .* statt [\w|\s]* steht. Noch anzumerken ist, dass der Punkt alles außer Newlines matcht, Newlines damit matchen kann man im Modus re.DOTALL.