Seite 1 von 1

Regular expression: ich steh mal wieder auf dem Schlauch

Verfasst: Samstag 28. Februar 2009, 21:39
von shakebox
Hallo!

Ich steh leider mal wieder auf dem Schlauch bei den REs. Folgender Codeschnipsel klappt leider nicht so ganz wie ich das moechte:

Code: Alles auswählen

import re
proxypath = '/mnt/frozone/projects/pope_joan/180_010/scans/vfx_180_010_2_1/2734x1538/proxies_half/vfx_180_010_2_1.%07d.jpg'
newpath = re.sub(r'/proxies_.?/', r'/proxies_full/', proxypath)
print newpath
eigentlich sollte in dem String das '/proxies_half/' zu '/proxies_full/' werden, wird es aber nicht. Wenn ich die gleiche RegEx aber in nem RegEx-Tester z.B. von KomodoIDE oder http://regexlib.com/ oder sowas teste dann klappt es.

Was ist also erstens an obigem Code falsch daß es SO nicht in Python funktioniert?

Und wie könnte man das evtl. insgesamt viel besser und eleganter schreiben? Der String sieht immer aus wie oben, nur steht da entweder 'half' oder 'full' oder 'quarter' und das soll dann jeweils gegen einen anderen der drei Werte getauscht werden.

Danke fürs Aufdiesprüngehelfen!

Verfasst: Samstag 28. Februar 2009, 22:04
von cofi
Mich würde mal interessieren, wie du dazu kommst, dass das funktionieren soll. `.?' matcht 0 oder 1 beliebige Zeichen, nicht beliebig viele. veränderst du das zu `.*' funktioniert es.

Verfasst: Samstag 28. Februar 2009, 22:11
von derdon
Folgenden Code finde ich besser, weil er nicht gierig ist:

Code: Alles auswählen

re.sub(r'/proxies_.+?/', r'/proxies_full/', proxypath)

Verfasst: Samstag 28. Februar 2009, 22:22
von shakebox
ah, ich Rindvieh. Das + steht im Expressiontester natürlich auch drin :) Sorry, eigene Fehlleistung. Danke fürs Augenöffnen!