M.: Was läuft bei diesem Regexp ab?

Beitrag lesen

Bin da auch kein Experte, aber ich versuchs mal. Wenns nicht stimmt, korrigiert mich bestimmt jemand und ich lerne was :)

Ich möchte also die Reihenfolge umdrehen.
Folgender Ausdruck 1 funktioniert: (.*?),(.*?),(.*)
Ebenfalls funktioniert 2: (.*),(.*),(.*)
NICHT funktioniert 3: (.*?),(.*?),(.*?)

Ich würde halt den String am Komma splitten, das Array umdrehen und per Join wieder zusammensetzen. Das aber nur nebenbei, weil ich deine Anwendung nicht kenne.

Meine Frage: müsste nicht bei Ausdruck 2 das erste (.*) bereits die gesamte Zeichenkette matchen und somit eigentlich ein ungewünschstes Ergebnis bringen? Und

IMO nein, da ja "beliebige Zeichen in beliebiger ANzahl bis zum nächsten Komma" gesucht wird.

wieso funktioniert Ausdruck 1 aber nicht Ausdruck 3? Warum macht es einen Unterschied, ob in der letzten Klammer das .* greedy ist oder nicht - danach kommt doch eh nichts relevantes mehr.

Ich sehe das so, dass nach einem String gesucht wird,der beliebige Zeichen in beliebiger ANzahlt enthalten kann. Der Sucht bisa zum Ende. Da nach dem Ende nichts mehr kommt, findet das ? kein zusätzliches Zeichen und somit läuft der Ausdruck ins leere.