Seite 1 von 1

reguläre ausdrücke in python

Verfasst: Freitag 30. Juli 2004, 10:30
von perlverwöhnter gast
hi python-creaks.
ich als alter gelegenheits perl-programmierer habe seit kurzem die ehre python programmieren zu dürfen.

ich habe nun folgendes problem mit regulären ausdrücken:

sagen wir mal ich will auf folgenden ausdruck matchen:
elem = 2332321dfsdfafdfdsafdsf(trfdgged)dffadfddffddf21312321

es soll allerding nur der teil in der klammer ersetz werden, der rest soll bestehen bleim.
gibt es sowas wie re.sub ('dfsdfafdfdsafdsf(trfdgged)dffadfddffddf','$1, elem)

in perl gibt mir $1 an der stelle den geklammerten teil, der rest bleibt besten. so etwas muss es doch sicher auch in python geben, oder?

Verfasst: Freitag 30. Juli 2004, 11:17
von Milan
Hi. Das gehört nach Allgemeine Fragen, aber du hast recht, das gibt es auch :wink: . Nimm statt "$1" einfach "\1" und es wird laufen.

Verfasst: Freitag 30. Juli 2004, 11:25
von perlverwöhnter gast
mh, also

elem = re.sub('.(=).','\1',elem)
sys.stdout.write(elem),sys.stdout.write(" ")

von

TIME=04-07-28 15:22:48

gibt mir jetzt sowas aus:

TIM☺4-07-28 15:22:48

Verfasst: Freitag 30. Juli 2004, 11:46
von Milan
Hi. Du musst dafür auch raw_Strings verwenden, ansonsten musst du "\\1" schreiben.

Also noch mal deutlicher:
du willst von "abc123def" meinetwegen die Zahlen 123 ersetzen und den Rest da lassen wo er war. Mit sub ersetzt du den kompletten Ausdruck, nach dem gematcht wird. Also musst den Rest auch wieder einsetzen. Das ginge so:

Code: Alles auswählen

import re
text="abc123def"
print re.sub(r"([a-z])*\d+([a-z])*",r"\1neuer Teil\2",text)
Ist halt mehr dafür gedacht, dass man die Gruppen rausnimmt und wieder ins Ersetzungsmuster einbaut, statt die Gruppe zu ersetzen.

Verfasst: Freitag 30. Juli 2004, 12:46
von perlverwöhnter gast
danke dir, das ist genau das, was ich seit gestern mittag suche.

allerdings ist dir ein tippfehler unterlaufen ;-D

fast richtig:print re.sub(r"([a-z])*\d+([a-z])*",r"\1neuer Teil\2",text)
ganz richtig:print re.sub(r"([a-z]*)\d+([a-z]*)",r"\1neuer Teil\2",text)

was schulde ich dir?

Verfasst: Freitag 30. Juli 2004, 14:00
von Milan
perlverwöhnter gast hat geschrieben:was schulde ich dir?
*hehe* :P :wink: zur Zeit reicht mir nen Platz im Schatten, ist doch recht warm heute...