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.
@tuner: Dann hast Du im Grunde genau das falsche in eine Gruppe gesetzt, nämlich das was Du wegwerfen/austauschen willst und nicht das was Du in der Ersetzung wiederverwenden willst. Letztendlich sind REs hier aber auch ein wenig Overkill.
das war ja nur ein Ausschnitt, das ganze tool verwaltet mehrere Passwörter und allein Rabbit hat seinen Pass an 6 verschiedenen Stellen, für verschiedene Applikationen..
Aber dein Post hat mich auf die Lösung gebracht..
regex:
@tuner: Da sind jetzt 2 Gruppen zu viel in dem regulären Ausdruck. Die leere Gruppe erscheint mir besonders sinnfrei. Und die Lösung kommt nicht mit Passwörtern klar in denen ein \ gefolgt von einer Ziffer vorkommt.
das mit den zusätzlichen Gruppen passt schon, da ich an anderer Stelle den Pass abfragen muss und bei manchen stellen hinter dem Passwort weiterer Kontext folgt. Aber alle werden mit der gleichen Funktion verarbeitet..
Für die passwörter nutze ich zufällig erzeugte, ausreichend grosse folgen variabler Länge aus string.ascii_letters + string.digits.
string.punctuation wurde weggelassen, weil das bei manchen Apps zu Problemen führt und eben auch viel Overhead mit der Verwaltung der regex erzeugen würde.
sql_connection = mysql://service:[PASS]@localhost/service?charset=utf8
oder
MYSQL_PASSWORD=[PASS]
Wenn alle mit der gleichen Funktion ersetzt werden sollen, muss halt bei der zweiten dahinter ein leerer match gemacht werden, damit die substitution nicht zu exceptions führt..