title feld ändern - regulärer ausdrücke

guten tag,

ich bin komplett neu hier und habe auch überhaupt gar keine ahnung wie man mit regulären ausdrücken agiert

folgendes problem:

ich habe im title früher mal alles mit bpm geschwindigkeiten getaggt

2Pac feat. Ashanti and T.I. - Pac's Life (Dirty) 95 bpm

Title: Pac's Life (Dirty) 95 bpm

Frage: Wie bekomme ich bei allen meinen mp3s diese Zahlen und das bpm dahinter raus und auch kein leerzeichen?

wäre sehr nett wenn mir jemand helfen könnte. danke

z. B. mit 'Tag-Felder formatieren'
Feld: %title%
Formatstring: $regexp(%title%,(.+?) \d+ bpm$,$1)

vorher: Pac's Life (Dirty) 95 bpm
nachher: Pac's Life (Dirty)

DD.20081113.1338.CET

einwandfrei, klappt auf jeden fall aber kannst dur mir auch die einzelnen b estandteile erklären damit ich es nachvollziehen kann?

Hallo weeper,

ich versuche mich mal an einer Erklärung des obigen Ausdrucks.

Zuerst einmal: Tag-Felder formatieren dürfte klar sein; hiermit wird einfach das betreffende Feld %title% neu geschrieben. Hierbei kann man viele Funktionen verwenden, eine Auflistung gibt's in der Hilfe. DetlevD verwendet hier den $regexp-Befehl

$regexp(%title%,(.+?) \d+ bpm$,$1)

Auf den gehe ich nun genauer ein:
Der Befehl $regexp benötigt 3 Argumente:

  1. Der Text in dem gesucht/ersetzt werden soll (hier: %title, also der bisherige Titel)
  2. Der zu suchende Ausdruck (versuche ich gleich genauer zu erläutern)
  3. Der "Ersetz-Ausdruck" (also das, was für 2. eingesetzt werden soll)

Diese Argumente werden in Klammern angefügt und durch Kommata getrennt.

Jetzt fehlt nur noch die regexp-Suchmaske:
(.+?) \d+ bpm$

'(.+?)' Hiermit wird der Titel gesucht. Gründe im Enzelnen: Der Punkt "." bedeutet ein beliebiges Zeichen, das Plus "+" heißt, dass dieses vorangegangene Zeichen (hier also irgendeines) beliebig oft, mindestens jedoch einmal vorkommen soll. Es wird auf diese Art ausgeschlossen, dass der Titel am Ende leer ist. Fehlt noch das Fragezeichen: Es bedeutet "nicht gierige Wiederholung". Hier meint das, dass sobald die Bedingungen die nach dieser Wiederholung auftreten erfüllt sind, diese nicht mehr zu .+ zählen. Denn eigentlich würde mit .+ ja jede beliebige nichtleere Zeichenkette angesprochen und die restlichen Bedingungen überflüssig.
Wichtig sind noch die Klammern um diesen Ausdruck: Damit wird dieser im Zwischenspeicher abgelegt. Den Titel brauchen wir ja später noch.
' \d+ ' Es folgt ein Leerzeichen, dann eine BPM-Zahl. Dies wird als regexp hier mit \d+ gelöst. \d bedeutet eine beliebige Ziffer, das Plus wie oben eine Wiederholung (min einmal). Dieser Ausdruck trifft also auf jede beliebige Zahlenreihenfolge beliebiger Länge >0 zu.
'bpm$' Nach Titel und Zahl soll noch das Wort BPM folgen. Dies wird hier einfach angegeben. Damit nicht falsche Ausdrücke geändert werden, folgt noch ein Dollarzeichen "$". Schließlich sollen die Titel ja mit "BPM" enden, und genau dafür ist das $ da: Es bedeutet Wortende, welches hier direkt nach dem "m" erfolgen soll.

Mit diesem Ausdruck werden also zusammengefasst alle Ausdrücke ersetzt, die:

  1. Auf ' beliebigeZahl BPM' enden
  2. Davor noch irgendetwas stehen haben (den Titel)

Dieser Gesamt-Ausdruck wird nun durch "$1" ersetzt. $1 steht hierbei für den Titel, den wir vorhin im regulären Ausdruck mittels () im Zwischenspeicher abgelegt haben. Dieser wird übrigens durchnummeriert; man kann dort also auch mehrere Texte (sog. Strings) ablegen.