I guess I don't understand the priority of the bracket statement. How do I make it choose the first occurence (leftmost) of those choices. In the third example, there are multiple forward slashes and I want to choose the first.
Sorry for not explaining clearly. I have no idea which of the 4 examples may occur. Any of them may happen and I want to handle them with one replace command. Or else I will have to manually sort them and apply a different action for each one. I was hoping to avoid this.
Give this a try (not tested):
RegExp: ^(.+) ((.+)( - (.+)|/(.+) - (.+)|/(.+)/(.+)|))$
In Mp3tag it should be: ^(.+) ((.+)( - (.+)|/(.+) - (.+)|/(.+)/(.+)|()))$
When running this RegExp in Mp3tag reality it produces not the result I would expect.
So please have patience, I will think over, maybe some other RegExp crack can help in the meantime.
Quantifiers are greedy and try to match as much as possible.
Your (.+=) does not stop at the first = it goes till the end of the string and back to the second because .+ matches every sign.
To make the quantifer lazy you can add a question mark behind it (.+?=) and it stops at the first =