# Copy TITLE version  to SUBTITLE

**URL:** <https://community.mp3tag.de/t/copy-title-version-to-subtitle/14542>\
**Category:** Support\
**Created:** [March 15, 2013, 1:58pm UTC](https://community.mp3tag.de/t/copy-title-version-to-subtitle/14542 "2013-03-15T13:58:02Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![djdizzle](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/d/ed8c4c/32.png) [@djdizzle](https://community.mp3tag.de/u/djdizzle)\
**Post date:** [March 15, 2013, 1:58pm UTC](https://community.mp3tag.de/t/copy-title-version-to-subtitle/14542/1 "2013-03-15T13:58:02Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![ohrenkino](https://community.mp3tag.de/user_avatar/community.mp3tag.de/ohrenkino/32/4843_2.png) [@ohrenkino](https://community.mp3tag.de/u/ohrenkino)\
**Post date:** [March 15, 2013, 3:59pm UTC](https://community.mp3tag.de/t/copy-title-version-to-subtitle/14542/2 "2013-03-15T15:59:56Z")

</div>

> [@DJ Dizzle](#):
>
> ... 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%»

---

<div class="post-metadata">

**Author:** ![djdizzle](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/d/ed8c4c/32.png) [@djdizzle](https://community.mp3tag.de/u/djdizzle)\
**Post date:** [March 15, 2013, 6:03pm UTC](https://community.mp3tag.de/t/copy-title-version-to-subtitle/14542/3 "2013-03-15T18:03:14Z")

</div>

> [@ohrenkino](#):
>
> 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 ».

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 \<\>.

> [@ohrenkino](#):
>
> 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%»

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.

---

<div class="post-metadata">

**Author:** ![ohrenkino](https://community.mp3tag.de/user_avatar/community.mp3tag.de/ohrenkino/32/4843_2.png) [@ohrenkino](https://community.mp3tag.de/u/ohrenkino)\
**Post date:** [March 15, 2013, 6:22pm UTC](https://community.mp3tag.de/t/copy-title-version-to-subtitle/14542/4 "2013-03-15T18:22:32Z")

</div>

> [@DJ Dizzle](#):
>
> ... 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.

---

<div class="post-metadata">

**Author:** ![djdizzle](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/d/ed8c4c/32.png) [@djdizzle](https://community.mp3tag.de/u/djdizzle)\
**Post date:** [July 2, 2013, 8:35am UTC](https://community.mp3tag.de/t/copy-title-version-to-subtitle/14542/5 "2013-07-02T08:35:27Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![ohrenkino](https://community.mp3tag.de/user_avatar/community.mp3tag.de/ohrenkino/32/4843_2.png) [@ohrenkino](https://community.mp3tag.de/u/ohrenkino)\
**Post date:** [July 2, 2013, 4:43pm UTC](https://community.mp3tag.de/t/copy-title-version-to-subtitle/14542/6 "2013-07-02T16:43:48Z")

</div>

> [@DJ Dizzle](#):
>
> 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 «».  
> ...

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 "(|[\<"

---

<div class="post-metadata">

**Author:** ![djdizzle](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/d/ed8c4c/32.png) [@djdizzle](https://community.mp3tag.de/u/djdizzle)\
**Post date:** [July 3, 2013, 2:12pm UTC](https://community.mp3tag.de/t/copy-title-version-to-subtitle/14542/7 "2013-07-03T14:12:16Z")

</div>

> [@ohrenkino](#):
>
> 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?

---

<div class="post-metadata">

**Author:** ![ohrenkino](https://community.mp3tag.de/user_avatar/community.mp3tag.de/ohrenkino/32/4843_2.png) [@ohrenkino](https://community.mp3tag.de/u/ohrenkino)\
**Post date:** [July 3, 2013, 3:07pm UTC](https://community.mp3tag.de/t/copy-title-version-to-subtitle/14542/8 "2013-07-03T15:07:27Z")

</div>

> [@DJ Dizzle](#):
>
> Thanks for that. Unfortunately it did not work as expected.
> 
> Original: Turn That Thing Down (Deorro Remix)  
> Result: Turn That Thing Down (Deorro «Remix»  
> ..

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.

---

<div class="post-metadata">

**Author:** ![djdizzle](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/d/ed8c4c/32.png) [@djdizzle](https://community.mp3tag.de/u/djdizzle)\
**Post date:** [July 3, 2013, 4:20pm UTC](https://community.mp3tag.de/t/copy-title-version-to-subtitle/14542/9 "2013-07-03T16:20:44Z")

</div>

> [@ohrenkino](#):
>
> 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:](https://community.mp3tag.de/uploads/default/original/1X/cfaeba84fe6704387c5b34dfdd8172bd51b6f533.gif ":unsure:") ![:huh:](https://community.mp3tag.de/uploads/default/original/1X/f15ee73c0fd9ec3b0db7481f0558638f8ee224ce.gif ":huh:")

---

<div class="post-metadata">

**Author:** ![ohrenkino](https://community.mp3tag.de/user_avatar/community.mp3tag.de/ohrenkino/32/4843_2.png) [@ohrenkino](https://community.mp3tag.de/u/ohrenkino)\
**Post date:** [July 3, 2013, 4:33pm UTC](https://community.mp3tag.de/t/copy-title-version-to-subtitle/14542/10 "2013-07-03T16:33:34Z")

</div>

> [@DJ Dizzle](#):
>
> ... _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:](https://community.mp3tag.de/uploads/default/original/1X/cfaeba84fe6704387c5b34dfdd8172bd51b6f533.gif ":unsure:") ![:huh:](https://community.mp3tag.de/uploads/default/original/1X/f15ee73c0fd9ec3b0db7481f0558638f8ee224ce.gif ":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.

---

<div class="post-metadata">

**Author:** ![djdizzle](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/d/ed8c4c/32.png) [@djdizzle](https://community.mp3tag.de/u/djdizzle)\
**Post date:** [March 19, 2014, 11:08am UTC](https://community.mp3tag.de/t/copy-title-version-to-subtitle/14542/11 "2014-03-19T11:08:46Z")

</div>

> [@ohrenkino](#):
>
> 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 "(|[\<"

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»

---

<div class="post-metadata">

**Author:** ![stevehero](https://community.mp3tag.de/user_avatar/community.mp3tag.de/stevehero/32/337_2.png) [@stevehero](https://community.mp3tag.de/u/stevehero)\
**Post date:** [March 19, 2014, 12:19pm UTC](https://community.mp3tag.de/t/copy-title-version-to-subtitle/14542/12 "2014-03-19T12:19:08Z")

</div>

> [@DJ Dizzle](#):
>
> 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)()|])

---

<div class="post-metadata">

**Author:** ![djdizzle](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/d/ed8c4c/32.png) [@djdizzle](https://community.mp3tag.de/u/djdizzle)\
**Post date:** [March 19, 2014, 1:33pm UTC](https://community.mp3tag.de/t/copy-title-version-to-subtitle/14542/13 "2014-03-19T13:33:11Z")

</div>

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:

---

<div class="post-metadata">

**Author:** ![djdizzle](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/d/ed8c4c/32.png) [@djdizzle](https://community.mp3tag.de/u/djdizzle)\
**Post date:** [November 16, 2014, 1:53pm UTC](https://community.mp3tag.de/t/copy-title-version-to-subtitle/14542/14 "2014-11-16T13:53:19Z")

</div>

> [@DJ Dizzle](#):
>
> _ **Replace with regular expression** _  
> Field:  
> _TITLE_  
> Regular Expression:  
> _(.)((|[)((.)Version|(.)Dub|(.)Mix|(.)Edit|(.)Remix|(.)Cut|(.)Instrumental|  
> (.)Radio Edit|(.)apella)()|])_  
> Replace matches with:  
> _$1«$3»_

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?

---

<div class="post-metadata">

**Author:** ![vkostas](https://community.mp3tag.de/user_avatar/community.mp3tag.de/vkostas/32/227_2.png) [@vkostas](https://community.mp3tag.de/u/vkostas)\
**Post date:** [November 16, 2014, 3:59pm UTC](https://community.mp3tag.de/t/copy-title-version-to-subtitle/14542/15 "2014-11-16T15:59:51Z")

</div>

> [@DJ Dizzle](#):
>
> 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? 🙂

---

<div class="post-metadata">

**Author:** ![djdizzle](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/d/ed8c4c/32.png) [@djdizzle](https://community.mp3tag.de/u/djdizzle)\
**Post date:** [November 17, 2014, 1:14am UTC](https://community.mp3tag.de/t/copy-title-version-to-subtitle/14542/16 "2014-11-17T01:14:14Z")

</div>

> [@Victor Kostas](#):
>
> 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? 🙂

Hi Victor,

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

---

<div class="post-metadata">

**Author:** ![system](https://community.mp3tag.de/uploads/default/original/2X/c/ce7035d426cb755a7916793326d23b465222a407.png) [@system](https://community.mp3tag.de/u/system)\
**Post date:** [February 9, 2026, 12:24pm UTC](https://community.mp3tag.de/t/copy-title-version-to-subtitle/14542/17 "2026-02-09T12:24:23Z")

</div>

Closed on February 9, 2026, 12:24pm UTC


