Performer Role Regular Expression

I found:

My problem is a little different:

Person = first name last name or first name first name last name or first name first name xxx last name
Role: e.g. tenor saxophone, clarinet, piano [xxx 1855]

Source %soloist% (multi-tag \, any order and number of tags):
Person1 - Role1\Person2 - Role2a, Role2b, ..., Roll2x\Person3 - Role1

Target: %soloistsort% (PersonSort: Last name, first name):

PersonSort1 - Rolle1\PersonSort2 - Rolle2a, Rolle2b, ..., Roll2x\PersonSort3 - Rolle1

What would the solution look like? - I have too little knowledge.

You could try
$replace($trim($regexp($meta_sep(soloist,; ); ,'(.*?) (.*?) - (.*?); ','$2, $1 - $3; ')),; ,\\,;,)

Thank you ohrenkino! Another solution that makes tagging easier for me.