Ist eine String-Transformation, die als Regexp-Substitution ausgedrückt wird, eine bequeme Möglichkeit, diese Transformation umzukehren, vorzugsweise in Python?Regexp-Substitution umkehren
Zum Beispiel angesichts der Transformation
def f(x): return re.sub('foo((:?bar)?)', r'\1', x)
die 'foobar'
zu 'bar'
und 'foo'
auf den leeren String verwandelt, würde Ich mag
def g(x): return re.sub('((:?bar)?)', r'foo\1', x)
erhalten, die das Gegenteil der Fall ist, in dem Sinne, dass
f(g(x)) == x
Offensichtlich sind nicht alle Regexp-Substitutionen 1: 1-Zuordnungen, aber mein Wunschdenken ist, dass sie alle umgekehrt werden können, um einen möglichen Eingabewert g(x)
zu erhalten, der eine gegebene Ausgabe x
von der ursprünglichen Ersetzung ergeben würde.
Warum sollte ich das tun? Ich möchte URLs für beliebige Dateisystempfade generieren, die auf der Analyse von AliasMatch
Direktiven in einer Apache-Konfigurationsdatei basieren.
+1 für ein sehr interessantes Problem, aber ich bezweifle, dass es eine nachvollziehbare Lösung gibt, die auch nur entfernt zuverlässig ist. – delnan