Regular expressions

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
alpha
User
Beiträge: 195
Registriert: Freitag 23. Mai 2003, 23:24
Wohnort: Ulm

Freitag 12. August 2005, 13:52

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
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Freitag 12. August 2005, 14:01

Hi!

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

Gruß, mawe
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 12. August 2005, 14:44

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten