# Teil der Tracknummer xxx/yyy einzeln greifen - möglichst kurzer RegEx

**URL:** https://community.mp3tag.de/t/teil-der-tracknummer-xxx-yyy-einzeln-greifen-moglichst-kurzer-regex/17620
**Category:** Allgemein
**Created:** [February 3, 2016, 6:15pm UTC](https://community.mp3tag.de/t/teil-der-tracknummer-xxx-yyy-einzeln-greifen-moglichst-kurzer-regex/17620 "2016-02-03T18:15:05Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![peilung](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/p/6bbea6/32.png) [@peilung](https://community.mp3tag.de/u/peilung)
#### Post date: [February 3, 2016, 6:15pm UTC](https://community.mp3tag.de/t/teil-der-tracknummer-xxx-yyy-einzeln-greifen-moglichst-kurzer-regex/17620/1 "2016-02-03T18:15:05Z")

</div>

Hallo,

in einer bestimmten Sammlung setzt sich die Trackangabe aus der laufenden Nummer und der Gesamtzahl zusammen, also

(...)  
9/120  
10/120  
11/120  
(...)

Mit diesem Ausdruck

$num($regexp(%track%,'^(\d\*)/(\d\*)',$1),3)

kann ich den vorderen Teil, die Tracknummer, greifen und als dreistelligen Wert weiterverarbeiten, und mit

$num($regexp(%track%,'^(\d\*)/(\d\*)',$2),3)

das gleiche für die Gesamtzahl erledigen, den hinteren Teil.

Unklar ist mir, warum mir das nur so umständlich gelingt, mit einem so langen RegEx-Ausdruck. Vielmehr sollte doch das vorangestellte Akzent-Zirkumflex ('^') ausreichen, um den ersten Teil zu greifen, also

$num($regexp(%track%,' **^** (\d\*)',$1),3) **\<--- klappt nicht!**

und das nachgestellte Dollarzeichen ('$') für die Gesamtzahl, also

$num($regexp(%track%,'(\d\*) **$'** ,$1),3) **\<--- klappt nicht!**

Das gelingt nicht. Wieso? Diese Aufgabe ist Teil einer umfangreicheren Aufgabe... und irgendwie scheint es mir, als hätte ich ein Verständnisproblem mit den RegEx.

Über einen erhellenden Lichtblick - trotz inzwischen dunklem Abend - würde ich mich sehr freuen.

Gruß & dank an alle!

peilung

---

<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: [February 3, 2016, 6:51pm UTC](https://community.mp3tag.de/t/teil-der-tracknummer-xxx-yyy-einzeln-greifen-moglichst-kurzer-regex/17620/2 "2016-02-03T18:51:07Z")

</div>

Ich glaube nicht, dass das Problem die $regexp ist, sondern $num().  
$num wandelt etwas in eine Zahl um - nur ist der / zwischen den beiden Zahlen eben keine Nummer, sondern ein Buchstabe. Und da stoppt dann $num.

Du sagst leider nicht, wo und wie du die Bestandteile weiterverarbeiten willst.  
Z.B. ginge ja auch ein "Tag-Feld importieren" für TRACK mit  
Formatstring: %track%/%totaltracks%  
Dann hast du die Zahlen in eigenen Feldern und kannst weiterspielen.

---

<div class="post-metadata">

### Author: ![peilung](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/p/6bbea6/32.png) [@peilung](https://community.mp3tag.de/u/peilung)
#### Post date: [February 3, 2016, 7:26pm UTC](https://community.mp3tag.de/t/teil-der-tracknummer-xxx-yyy-einzeln-greifen-moglichst-kurzer-regex/17620/3 "2016-02-03T19:26:38Z")

</div>

Guten Abend ohrenkino,

vielen Dank für Deine schnelle Reaktion.

> [@ohrenkino](#):
>
> Ich glaube nicht, dass das Problem die $regexp ist, sondern $num().  
> $num wandelt etwas in eine Zahl um - nur ist der / zwischen den beiden Zahlen eben keine Nummer, sondern ein Buchstabe. Und da stoppt dann $num.

Ich hab das Beispiel mal ohne den $num-Teil wiederholt, um mein Problem zu verdeutlichen.

Mit dem langen Ausdruck kann ich den Teil vor dem Schrägstrich greifen

 ![](https://community.mp3tag.de/uploads/default/original/2X/4/4e26e01a20605ca1fd7cce96e57f169d235a4aef.jpg)  

mit dem kürzeren Ausdruck jedoch nicht

 ![](https://community.mp3tag.de/uploads/default/original/2X/2/29f409fde7af8794860639f946ccb4e2eafe8218.jpg)  

(und ich habe auch schon etwas dazugelernt 🙂 )

Und das verstehe ich nicht, denn \d sollte nur Ziffern finden und ^ von Anfang, $ vom Ende.

Ist mein Problem jetzt deutlicher geworden?

peilung

 ![](https://community.mp3tag.de/uploads/default/original/2X/4/4e26e01a20605ca1fd7cce96e57f169d235a4aef.jpg)  

 ![](https://community.mp3tag.de/uploads/default/original/2X/2/29f409fde7af8794860639f946ccb4e2eafe8218.jpg)

---

<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: [February 3, 2016, 7:32pm UTC](https://community.mp3tag.de/t/teil-der-tracknummer-xxx-yyy-einzeln-greifen-moglichst-kurzer-regex/17620/4 "2016-02-03T19:32:38Z")

</div>

> [@peilung](#):
>
> ...
> 
> Ist mein Problem jetzt deutlicher geworden?
> 
> peilung

Nö.

Denn was soll am Ende aus der Regexp() werden?  
Beispiel:  
Diese hier  
$regexp(%track%,(\d+)/(\d+),$2 $1)  
tauscht TRACK mit TOTAL aus 3/14 wird 14 3  
Aber wozu?

---

<div class="post-metadata">

### Author: ![peilung](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/p/6bbea6/32.png) [@peilung](https://community.mp3tag.de/u/peilung)
#### Post date: [February 3, 2016, 7:43pm UTC](https://community.mp3tag.de/t/teil-der-tracknummer-xxx-yyy-einzeln-greifen-moglichst-kurzer-regex/17620/5 "2016-02-03T19:43:08Z")

</div>

> [@ohrenkino](#):
>
> Aber wozu?

Die fortlaufende Tracknummer entspricht zugleich der Platzierung in einer Chartliste, die Gesamtzahl der relevanten Gruppe (Top10, Top20 usw.). Diese Angaben werden in anderen Aktionen weiterverarbeitet (Dateien verschieben, Gruppen bilden...).

Und ich versuche dabei die Regex zu verstehen ![:angry:](https://community.mp3tag.de/uploads/default/original/1X/ebadaff04ae073d3d1cb3e2f4c6acf132380e5a5.gif ":angry:") Mir ist absolut unklar, warum der Ausdruck

^\d\*

nicht von vorne an die Angabe im Trackfeld '14/100' durchsucht und am Schrägstrich aufhört.

Jetzt klarer? ☹

peilung

---

<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: [February 3, 2016, 7:54pm UTC](https://community.mp3tag.de/t/teil-der-tracknummer-xxx-yyy-einzeln-greifen-moglichst-kurzer-regex/17620/6 "2016-02-03T19:54:28Z")

</div>

Tja, ich kriege mit \d auch nur alle Zahlen raus.  
Aber den vorderen Teil kriegt man aus TRACK doch am leichtesten mit $num raus ...  
Und den hinteren Teil kriegst du mit  
$regexp(%track%,(\d+)/,)

---

<div class="post-metadata">

### Author: ![peilung](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/p/6bbea6/32.png) [@peilung](https://community.mp3tag.de/u/peilung)
#### Post date: [February 4, 2016, 11:57am UTC](https://community.mp3tag.de/t/teil-der-tracknummer-xxx-yyy-einzeln-greifen-moglichst-kurzer-regex/17620/7 "2016-02-04T11:57:44Z")

</div>

Ich danke Dir für Deinen Tipp!

Wenn ich die Ergebnisse der Internetseite [REGEXR.COM](http://REGEXR.COM) zugrunde legen, nämlich

 ![](https://community.mp3tag.de/uploads/default/original/2X/5/5ff580fe3dd55b152b5535ecf79f8b58faeccc3b.PNG)  

und

 ![](https://community.mp3tag.de/uploads/default/original/2X/2/23b70492c5de7897ea2e24dcf6b17813460723fe.PNG)  

deutet vieles für mich auf eine Anomalie im Regex-Parser von MP3TAG hin. Oder ich habe etwas wirklich nicht verstanden.

peilung

 ![](https://community.mp3tag.de/uploads/default/original/2X/5/5ff580fe3dd55b152b5535ecf79f8b58faeccc3b.PNG)  

 ![](https://community.mp3tag.de/uploads/default/original/2X/2/23b70492c5de7897ea2e24dcf6b17813460723fe.PNG)

---

<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 9, 2016, 10:40am UTC](https://community.mp3tag.de/t/teil-der-tracknummer-xxx-yyy-einzeln-greifen-moglichst-kurzer-regex/17620/8 "2016-02-09T10:40:04Z")

</div>

> [@peilung](#):
>
> ... setzt sich die Trackangabe aus der laufenden Nummer und der Gesamtzahl zusammen, also ... 11/120 ... Unklar ist mir, warum ... mit einem so langen RegEx-Ausdruck. Vielmehr sollte doch das vorangestellte Akzent-Zirkumflex ('^') ausreichen, um den ersten Teil zu greifen, ... und das nachgestellte Dollarzeichen ('$') für die Gesamtzahl, ... Das gelingt nicht. Wieso? ... Über einen erhellenden Lichtblick ... würde ich mich sehr freuen. ...

Folgende Beispiele können das Finden und Ersetzen mit einem Regulären Ausdruck vielleicht besser verständlich machen.

**$regexp('12/345','(\d)(\d)','$1')==\> '1/35' $regexp('12/345','(\d)(\d)','$2')==\> '2/45' $regexp('12/345','\d\d','x')==\> 'x/x5' $regexp('12/345','(\d)(\d)','$1x')==\> '1x/3x5' $regexp('12/345','(\d)(\d)','$2x')==\> '2x/4x5' $regexp('12/345','^(\d+)','x$1x')==\> 'x12x/345' $regexp('12/345','(\d+)$','x$1x')==\> '12/x345x' $regexp('12/345','^(\d+).\*','x$1x')==\> 'x12x' $regexp('12/345','.\*?(\d+)$','x$1x')==\> 'x345x' $regexp('12/345','.\*?(\d+)','x$1x')==\> 'x12xx345x' $regexp('12/345','.\*(\d+).\*','x$1x')==\> 'x5x' $regexp('12/345','.\*?(\d+).\*','x$1x')==\> 'x12x' $regexp('12/345','.\*?(\d+).\*?','x$1x')==\> 'x12xx345x' $regexp('12/345','^(\d+).\*$','$1')==\> '12' $regexp('12/345','.\*?(\d+)$','$1')==\> '345' $regexp('12/345','^(\d+)\D(\d+)$','$1') ==\> '12' $regexp('12/345','^(\d+)\D(\d+)$','$2') ==\> '345'**

DD.20160209.1240.CET
