Inkonsistenz zwischen sed- und python-regulären Ausdrücken

Ich entschuldige mich, wenn dies irgendwo veröffentlicht wird, aber meine flüchtige Suche hat nichts gefunden.

Bei der Python-Programmierung ist mir der folgende Befehl aufgefallen:

re.sub("a*((ab)*)b", r"\1", "aabb")

gibt die leere Zeichenfolge zurück. Aber ein gleichwertiger Befehl in sed:

echo "aabb" | sed "s/a*\(\(ab\)*\)b/\1/"

kehrt zurückab.

Für mich ist es sinnvoll, dass die "a *" - Direktive am Anfang des Python-Regex mit beiden übereinstimmta's, was dazu führt, dass "(ab) *" null mal übereinstimmt, aber ich habe keine Ahnung, wie sed darauf kommtab. Weiß jemand, was der Unterschied zwischen den beiden Regex-Engines ist, die dies verursachen? Ich glaube, beide stimmen standardmäßig gierig mit Sternen überein, aber mir fiel ein, dass sed eher von rechts als von links übereinstimmt. Jede Einsicht wäre sehr dankbar.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage