Copy TITLE version to SUBTITLE

I would like to know if there is a RegEx I can use to pull a string, which happens to be the version/remix of the the track from between «» in the TITLE, and copy to the SUBTITLE tag.

Also, I would like to know if there is a RegEx to pull strings in the TITLE with Version, Mix, Remix, Edit, Instrumental, Dub, apella enclosed in [] () <> and enclose them in «». Then run the above RegEx.

So, second things first: If you only want to replace the various bracket types with «», the a simply "Replace" action (no regular expression needed) will do.
Create an Action group with an action for each of the opening bracket to replace it with «.
Then create the actions that replace the closing brackets with ».

And for the first part: do you want to copy or move that part to subtitle?
If you move it, create an action of the type "Guess value" for %title%
Enter as Format string: %title% «%subtitle%»

If you want to copy then it might be easiest to first copy the complete title to subtitle (action: format field for SUBTITLE, format string %title%)

and then delete the superfluous data with an action of the type "Guess value" for %subtitle%:
Enter as Format String: %dummy% «%subtitle%»

The problem with that is some titles require () for example "Everything I Do (I Do It For You)".
That's why I wanted the regular expression to search for Version, etc. inside the () and only ().
As some online music stores use () or [] for version/mix/remix tagging. I prefer to use the «» for versioning to differentiate from an an extended title, and also file renaming will not allow for the use of [] or <>.

I only wanted to copy, not move. Can you make one action to perform all of this in one go?

As I will be performing this on a large collection of tracks, and do not wish to have to select different groups of tracks to perform different actions on them.

I doubt that this will work.
All expressions and stuff are a sort of pattern recognition. If the formal pattern matches then the action will be executed.
If you have formal identical separators which only mean something different, the action will produce unwanted results.
So as it is not clear what a "version" in round brackets is as opposed to a simple string like "(I Do It For You)", you would have to do the cleaning up beforehand.

I would advise you to use the filter to find those tracks that match the patterns, like
%title% HAS Remix OR %title% HAS Maxi
etc.

To move part of a string from one field to another and the string is separated by a unique identifier can be done with an action of the type "Guess values" for %title%
Enter %title% «%subtitle%»
as format string.

What about searching %title% for a string that is enclosed in ()[]<> or after " - " that contains " Version| Dub| Mix| Edit| Remix| Cut| Instrumental| pella", then change the brackets to «».

Then I will perform action: format field for SUBTITLE, format string %title% and action: guess value for SUBTITLE, format string %dummy% «%subtitle%».

The third step I would then like to add is to copy the SUBTITLE to the MIXARTIST field removing the " Version| Dub| Mix| Edit| Remix| Cut| Instrumental| pella" portion of the string.

As you do not really search but do a match try one of these matches:
Action of the type "Replace with regular expression" for TITLE
Search string:
(.)((|[)(Version|Dub|Mix|Edit|Remix|Cut|Instrumental|Radio Edit)()|])(.)
Replace String:
$1 «$3» $5

Please note, that this will work only for the words that you have defined. You may append this list.
To find out whether you really found all kinds of words in brackets, you would have to use a filter like

%title% MATCHES "(|[<"

Thanks for that. Unfortunately it did not work as expected.

Original: Turn That Thing Down (Deorro Remix)
Result: Turn That Thing Down (Deorro «Remix»

Is it possible to use a wildcard expression to include the white-space plus any word(s) between the opening bracket and (Version|Dub|Mix|Edit|Remix|Cut|Instrumental|Acapella) eg. (Deorro Remix).
Or is that to complex for a RegEx?

When I do that nothing happens (as expected) as the "Deorro Remix" is not in the list of keywords (only Remix is and that must be preceeded by a bracket)
If you include the <> then modify the expression like this:
(.)([(|[|<])(Version|Dub|Mix|Edit|Remix|Cut|Instrumental|Radio Edit)([)|]|>])(.)

This will do nothing to anything in brackets that is not included in the list.
It will leave you with all the exceptions. And for these it will be easier to simply replace all the brackets.

Maybe, it would be easier just doing a simple replace on [] and <>. The only problem I'm really having is with the (), when there is an extended title as well as a version eg. Need U (100%) (Radio Edit) I need some way of only replacing the second instance. Then, I still have an issue of being able to replace () of a version without touching an extended title, eg. Need U (100%) or Hello (Radio Edit).

I am a DJ therefore, have thousands of tracks to organise and, do not have the time to spend manually searching and fixing these things. :unsure: :huh:

If the pattern is:
Title (something) (something else)
then you could replace this with (a regular expression):
(.)((.)) ((.*))$
$1($2) <$3>

as the pattern is "always two pairs of brackets"
But this would be a separate run for only these special cases.
So perhaps, if you create a sequence of actions in an action group that first sorts out the special cases and then treats the left-overs you get as fast as you need it.

I just had a quick play around with this RegEx and came up with this, which is exactly what I was looking for

Search string:
(.)((|[)((.)Version|(.)Dub|(.)Mix|(.)Edit|(.)Remix|(.)Cut|(.)Instrumental|
(.*)Radio Edit)()|])
Replace string:
$1«$3»

Use that same regexp to filter F3 which will ensure the files you are about to modify match your criteria. You can then quickly scan those to ensure your regexp does the trick and your not matching files you shouldn't.

Press F3 and paste: %TITLE% MATCHES (.)((|[)((.)Version|(.)Dub|(.)Mix|(.)Edit|(.)Remix|(.)Cut|(.)Instrumental|
(.*)Radio Edit)()|])

This is the full action group

Changes Title (Title Extension) (Version) to Title (Title Extension) «Version»
Replace with regular expression
Field:
TITLE
Regular Expression:
(.)((.)) ((.*))$
Replace matches with:
$1($2) «$3»

Changes Title (Version) to Title «Version»

Replace with regular expression
Field:
TITLE
Regular Expression:
(.)((|[)((.)Version|(.)Dub|(.)Mix|(.)Edit|(.)Remix|(.)Cut|(.)Instrumental|
(.)Radio Edit|(.)apella)()|])

Replace matches with:
$1«$3»

Copies version to subtitle

Format Value
Field:
SUBTITLE
Format string:
%title%

Guess values
Source format:
%subtitle%
Guessing pattern:
%dummy% «%subtitle%»

Replace with regular expression
Field:
SUBTITLE
Regular Expression:
^\s+
Replace matches with:

Mixartist/Remixer

Format Value
Field:
MIXARTIST
Format string:
%subtitle%

Replace with regular expression
Field:
MIXARTIST
Regular Expression:
(.)( Version| Dub| Remix| Mix| Edit| Cut| Instrumental|(.)apella)
Replace matches with:
$1

Replace with regular expression
Field:
MIXARTIST
Regular Expression:
(Club|Dub|Extended|Full|Radio|Short|Vocal)
Replace matches with:

Replace with regular expression
Field:
MIXARTIST
Regular Expression:
(\ Re| V8)$
Replace matches with:

Replace with regular expression
Field:
MIXARTIST
Regular Expression:
(,| and| &)
Replace matches with:
;

Replace with regular expression
Field:
MIXARTIST
Regular Expression:
\s+$
Replace matches with:

I have tried the following...
(.)((|[)((.)[A-Za-z0-9]* Remix)()|])

and it worked, however... resulted with the following...
[«Radio Remix»

and on further testing... I have discovered if there is more than one string inside the opening [, the following happens...
[Javi «Mula Remix»

is there something that I missed?

DJ,
Your request is spread among many posts and I am afraid the email chain may go long enough. Can you please recap your full request so I could have a look and provide a solution? :slight_smile:

Hi Victor,

I am only interested in the most recent query, which you quoted.