I'm very late on trying to get answers on those threads as most of the topics already found solutions dated back to 2011. I know you've pointed out to two older threads but somehow I couldn't get the specifics provided in them to work on my case which is exactly as the O.P. is (was) trying to get a solution for.
Pretty much converting the following example from: Oscar G - Rain (feat. Seri)(Original Mix)
To: Oscar G feat. Seri - Rain (Original Mix)
So, essentially moving the (feat. artist) to ARTIST and leave the second paranthese intact regardless of its content in TITLE.
I've managed to find a lot of answers in conversion from many threads around here without having to re-open the thread but this one still stumping me. So, a huge thanks to you or for any of the other board RegEX wizards who could help.
To clarify: the example is ARTIST - TITLE in the Tags (not the filename).
So, (ARTIST)Oscar G - (TITLE)Rain (feat. Seri)(Original Mix)
To: (ARTIST)Oscar G feat. Seri - (TITLE)Rain (Original Mix)
In the thread I've found a Convert solution from DetlevD: Convert | Filename - Filename | ALT+3
Old filename pattern:
%1 - %2 (feat. %3)
New filename pattern (formatstring):
%1' feat. '%3' - '%2' (feat. '%3')'
I slightly modified it to: Old Filename pattern:
%1 - %2 (feat. %3)(%4)
New filename pattern:
%1 feat. %3 - %2 (%4)
And that works.
However, I was hoping to find an ACTIONS solution instead as I can't save the Filename Convert. With hundreds of files to clean on a regular, I'm afraid that every time I quit the program I'd constantly have to re-enter the code over and over as opposed to the ACTIONS that I could just save and recall. (Correct me if I'm wrong but I don't see how to save the Filename format strings in the Convert pop-up box).
There is this ACTIONS solution given a few times in the thread:
Action: Guess Values Source Format: %title% $regexp(%artist%,(.) Feat. (.),'('Feat. $2')' +++ $1)
Guessing Pattern: %title% +++ %artist%
but somehow it doesn't change anything when I try to apply to my situation; there must be something missing or I'm applying it wrong?.
I hope this explain my situation better. Like I said, the Convert is holding me down for now but hopefully an ACTIONS (RegEx) would save me tons of more time.
You can translate the patterns from the Convert solution almost directly to a regular expression for a Search with regular expression action:
Search string: (.) - (.) (feat. (.))((.))
Replace string: $1 feat. $3 - $2 ($4)