# RegExpr für klassiche Beschriftung von Tonart

**URL:** https://community.mp3tag.de/t/regexpr-fur-klassiche-beschriftung-von-tonart/6319
**Category:** Allgemein
**Created:** [February 23, 2008, 1:17pm UTC](https://community.mp3tag.de/t/regexpr-fur-klassiche-beschriftung-von-tonart/6319 "2008-02-23T13:17:45Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![LyricsLover](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/l/c6cbf5/32.png) [@LyricsLover](https://community.mp3tag.de/u/LyricsLover)
#### Post date: [February 23, 2008, 1:17pm UTC](https://community.mp3tag.de/t/regexpr-fur-klassiche-beschriftung-von-tonart/6319/1 "2008-02-23T13:17:45Z")

</div>

Ich möchte gerne die klassische Beschriftung der Tonarten in meinen TITLE mit einer RegExpr lösen. Leider scheitere ich an der richtigen Gross-/Kleinschreibung:

Die (relevanten Teile der) Titel heissen z.B.:  
B Major  
b Major  
B major  
C Minor  
c minor  
etc.

und ich möchte schlussendlich überall einheitlich einen grossen einzelnen Buchstaben, einen Bindestrich und einen grossen ersten Buchstaben des folgenden Wortes, also z.B.  
B-Major  
C-Minor

Bisher hab ich:  
Regulärer Ausdruck: ([A-G]\s)(?=(major|minor))  
Treffer ersetzen durch: $trim($upper($0))-$caps2($2)

Warum ergibt mir das aber für den zweiten Teil hinter dem Bindestrich ($2) immer eine Verdoppelung des Wortes "Major" oder "Minor"?

---

<div class="post-metadata">

### Author: ![DetlevD](https://community.mp3tag.de/user_avatar/community.mp3tag.de/detlevd/32/123_2.png) [@DetlevD](https://community.mp3tag.de/u/DetlevD)
#### Post date: [February 23, 2008, 1:38pm UTC](https://community.mp3tag.de/t/regexpr-fur-klassiche-beschriftung-von-tonart/6319/2 "2008-02-23T13:38:46Z")

</div>

> [@LyricsLover](#):
>
> ... und ich möchte schlussendlich überall einheitlich einen grossen einzelnen Buchstaben, einen Bindestrich und einen grossen ersten Buchstaben des folgenden Wortes, also z.B. B-Major ...

Hast du dir das richtig durchdacht?  
Siehe: [http://en.wikipedia.org/wiki/Category:Musical\_keys](http://en.wikipedia.org/wiki/Category:Musical_keys)  
Wie willst du z. B. mit solchen Tonarten umgehen:  
A♭Dur = A-flat major  
c♯Moll = C-sharp minor

DD.20080223.1538.CET

---

<div class="post-metadata">

### Author: ![LyricsLover](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/l/c6cbf5/32.png) [@LyricsLover](https://community.mp3tag.de/u/LyricsLover)
#### Post date: [February 23, 2008, 1:43pm UTC](https://community.mp3tag.de/t/regexpr-fur-klassiche-beschriftung-von-tonart/6319/3 "2008-02-23T13:43:12Z")

</div>

Hmm, sowas ist bei mir bisher nicht vorgekommen ![:ph34r:](https://community.mp3tag.de/uploads/default/original/1X/d9d21e0e122fbe04cbaaa509828a996924771538.gif ":ph34r:")

Aber Du hast natürlich recht. Wahrscheinlich hätte ich daraus folgendes gemacht:  
Ab-Major  
C#-Minor

---

<div class="post-metadata">

### Author: ![DetlevD](https://community.mp3tag.de/user_avatar/community.mp3tag.de/detlevd/32/123_2.png) [@DetlevD](https://community.mp3tag.de/u/DetlevD)
#### Post date: [February 23, 2008, 2:54pm UTC](https://community.mp3tag.de/t/regexpr-fur-klassiche-beschriftung-von-tonart/6319/4 "2008-02-23T14:54:51Z")

</div>

Nur 'mal so als erster Versuch:

```
$caps($regexp($lower(%TONART%),^('['a-g']')\s(m(aj|in)or)$,$1-$2),-)

```

mit %TONART% = 'a miNor'  
ergibt es: 'A-Minor'

DD.20080223.1654.CET

... und ein zweiter Versuch:

```
$caps($regexp($replace($lower(%TONART%),'-flat ','b ','-sharp ','# '),^('['a-g']''['b#']'*)'['\s|-']'(m(aj|in)or)$,$1-$2),-)

```

oder

```
$caps($regexp($replace($lower(%TONART%),'-flat ','b ','-sharp ','# '),'^([a-g][b#]*)[\s|-](m(aj|in)or)$',$1-$2),-)

```

Beispiele:

'a-major' ==\> 'A-Major'  
'g-minor' ==\> 'G-Minor'

'a major' ==\> 'A-Major'  
'g minor' ==\> 'G-Minor'

'ab-minor' ==\> 'Ab-Minor'  
'a#-major' ==\> 'A#-Major'

'ab minor' ==\> 'Ab-Minor'  
'a# major' ==\> 'A#-Major'

'a-FLAT miNor' ==\> 'Ab-Minor'  
'a-ShArP mAJor' ==\> 'A#-Major'

DD.20080223.1711.CET

---

<div class="post-metadata">

### Author: ![LyricsLover](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/l/c6cbf5/32.png) [@LyricsLover](https://community.mp3tag.de/u/LyricsLover)
#### Post date: [February 23, 2008, 3:10pm UTC](https://community.mp3tag.de/t/regexpr-fur-klassiche-beschriftung-von-tonart/6319/5 "2008-02-23T15:10:27Z")

</div>

Danke für Deine Bemühungen!

Ich wende im Moment (bis auf weiteres 🕶 ) folgende Syntax an:

Regulärer Ausdruck: (\s[A-G]{1}\s)(?=(major|minor))  
Treffer ersetzen durch: $upper($0)

(Ich suche also noch "alleinstehenden" Buchstaben zwischen A und G gefolgt von 'major' oder 'minor'. Die Treffer werden GROSSgeschrieben)

Danach folgen zwei hundskomune  
Ersetzen TITLE  
1 x mit " minor" -\> "-Minor"  
1 x mit " major" -\> "-Major"

Das funktioniert bisher auch mit C# und Eb-Varianten. Mal sehen, was die weiteren Tests bringen.
