Conditional Regex to Move parts of tag between Title and Artist

I've been trying to make this work with regex for a few months now, and I cannot figure out my problem. I have several hundred folders to perform MP3 tag updates on, and more automation is critical for me to keep from burning out and getting sick of working with them.

I have a list of mp3s like this:

01 Rico Bernasconi - Girls Feat. Akon (Jordy Remix).mp3

02 Carl Parker, Ione Mai - I Feel Passion (Original Mix).mp3
06 Enzo Saccone - Pa Pa Peo Feat. Dahlia (Enzo Saccone Tribal Progressive).mp3
08 Jack Mazzoni, BSharry, Christopher Vitale - Think About the Way (feat. Carmen Nophra) (Jack Mazzoni VS Christopher Vitale Remix).mp3

I convert filenames to tags (%TRACK% %ARTIST% - %TITLE%), to get this:

01 | Rico Bernasconi | Girls Feat. Akon (Jordy Remix)
02 | Carl Parker, Ione Mai | I Feel Passion (Original Mix)
06 | Enzo Saccone | Pa Pa Peo Feat. Dahlia (Enzo Saccone Tribal Progressive)
08 | Jack Mazzoni, BSharry, Christopher Vitale | Think About the Way (feat. Carmen Nophra) (Jack Mazzoni VS Christopher Vitale Remix)

My preferred method is to have any featured artists included in the Artist tag. I can't just look for a parenthesis (like track 8) because it would grab the Remix info from 1, 2, and 6, and ignore the Feat. on track 1.

So--I need something that will trigger on the word "[Ff]eat.?" (either case, . optional), and then capture anything following that, until it got to a (, {, or [ that would signify a new capture area.

examples:

Rico Bernasconi | Girls Feat. Akon (Jordy Remix) becomes Rico Bernasconi Feat. Akon | Girls (Jordy Remix)
and
Jack Mazzoni, BSharry, Christopher Vitale | Think About the Way (feat. Carmen Nophra) (Jack Mazzoni VS Christopher Vitale Remix) becomes Jack Mazzoni, BSharry, Christopher Vitale feat. Carmen Nophra | Think About the Way (Jack Mazzoni VS Christopher Vitale Remix)

A key part of this is a semi-intelligent matching to "know" if "feat" is included, and move that chunk over iff it exists... and to ignore it otherwise.

This is a sample of some code I've tried. It doesn't work.

$if($neql($regexp(%TITLE%,^.+?\((?:[Ff]t.+?|[Ff]eat.+?|[Ff]eaturing.+?)\)\s*\(.+?\)$),%TITLE%),%ARTIST%' feat. '$regexp(%TITLE%,^(.+?)\s+[[({<]?(ft\.?|feat\.?|featuring)\s+(.+?)[])}>]?\s*(\(.+?\))\s*$,$2,1),%ARTIST%)

Help me, regex gurus... you're my only hope!

Read there ...
Video Edit Radio Version in Klammern löschen
" (feat.) " problem
Move "Featuring" from Artist to Title

Move "feat xxx" from TITLE to ARTIST From A: Jack Mazzoni, BSharry, Christopher Vitale T: Think About the Way (feat. Carmen Nophra) (Jack Mazzoni VS Christopher Vitale Remix) To A: Jack Mazzoni, BSharry, Christopher Vitale feat. Carmen Nophra (Jack Mazzoni VS Christopher Vitale Remix) T: Think About the Way Action: Guess values Source format: %ARTIST%$regexp(%TITLE%,'^(.+?)\s+[[({<]?\s*(?:featuring|feat\.?|ft\.?)\s*([^])}>]+)\>\s*[])}>]?(.*)$',' feat. $2$3+++$1',1) Guessing pattern: %TITLE%+++%ARTIST% From A: Jack Mazzoni, BSharry, Christopher Vitale T: Think About the Way (feat. Carmen Nophra) (Jack Mazzoni VS Christopher Vitale Remix) To A: Jack Mazzoni, BSharry, Christopher Vitale feat. Carmen Nophra T: Think About the Way (Jack Mazzoni VS Christopher Vitale Remix) Action: Guess values Source format: %ARTIST%$regexp(%TITLE%,'^(.+?)\s+[[({<]?\s*(?:featuring|feat\.?|ft\.?)\s*([^])}>]+)\>\s*[])}>]?(.*)$',' feat. $2+++$1$3',1) Guessing pattern: %TITLE%+++%ARTIST%

DD.20150508.0725.CEST