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
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.
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.
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?
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 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.
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+)/,)