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).mp302 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!