Fragen zu "Composersort mit mehreren Personen"

10 Jahre ist es her, dass Fredo hier die folgende Frage stellte: Wie kann man eine Folge von mehreren Namen, die mehr als einen Vornamen haben, invertieren.

Bsp.:
Johann Sebastian Bach; Wolfgang Amadeus Mozart; Ferruccio Busoni
soll werden zu:
Bach, Johann Sebastian; Mozart, Wolfgang Amadeus; Busoni, Ferruccio

Fredo benutzte damals als Trenner (im Ausgangsmaterial) zwischen den Namen nicht einen Strichpunkt, sondern ein Komma.

Von den beiden genialen "Cracks" PON und DetlevD kamen ausgefuchste Lösungsvorschläge:
$regexp($regexp(%composer%,(.?) (\w)(', '|$),$2', '$1; ),; $,) [PON]
oder
$cutRight($regexp(%composer%', ','(.?)\s(\w),\s','$2, $1; '),2) [DetlevD]

Ich habe mir die vergangene Nacht um die Ohren geschlagen, um die Formeln so anzupassen, dass sie auch mit einem Strichpunkt als Trenner der Namen funktionieren. Es ist mir nicht gelungen.
Liegt wohl daran, dass ich die beiden Ausdrücke nicht wirklich in allen Details verstehe (z.B. die Maskierungen mit den Hochkommas bei DetlevD, etc.)

An pons Beispiel angelehnt: Ersetze durch den regulären Ausdruck "(.?) (\w)(; |$)" das angegebene Muster in der Zeichenkettedurch durch "$2', ' $1; " führt nicht zum gewünschten Ergebnis.

Wer kann helfen? Wer kann es mir erklären, wie die beiden Formlen funktionieren und richtig angepasst werden müssen?

Danke & Gruß

Versuch mal:
$regexp($regexp(%composer%,(.*?) (\w*)('; '|$),$2', '$1; ),; $,)
Der Forumsformatierer hat bei dem alten Thread ein paar von den Sternen geschluckt.

Vielen, vielen Dank, ohrenkino ! Es funktioniert. Kannst Du mir vielleich bitte noch erklären, warum ich genau an dieser Stelle ('; '|$) das Semikolon samt Leerstelle mit den Hochkommas maskieren muss, damit es funktioniert. Das Semikolon am Ende des regulären Ausdrucks "; $,)" wird ja auch nicht maskiert und ist Bestandteil einer $regexp-Formel. Die Antwort würde mir sicherlich beim Bau anderer Formeln weiterhelfen.
Gruß, Lerob

Es wäre auch gegangen:
$regexp($regexp(%composer%,(.*?) (\w*)(; |$),$2', '$1; ),; $,)
Also: eine Maskierung wäre nicht nötig.
Nötig ist sie immer, wenn Syntaxelemente als Literale verwendet werden sollen.
Beim Ursprungsbeispiel soll ein Komma trennen - aber das Komma gehört bei $regexp() auch dazu, die einzelnen Komponenten voneinander zu trennen. Wenn das Komma also nicht als Trenner in der Syntax dienen soll, dann muss man die Apostrophe drumrum setzen.

Hi,
ich danke Dir für Deine hilfreichen Klarstellungen. Nachdem ich dutzende Varianten durchgetestet hatte, war ich schon ganz wirr im Kopf und hatte alle meine bisherigen Erfahrungen in Frage gestellt.
Also, es waren einzig die von der Formatierung geschluckten Sternchen, die schuld waren, dass der Ausdruck nicht funktionierte. :smiling_face_with_three_hearts: