IF-Funktion mit RegExp funktioniert nicht mit Dateiname


#1

Hallo an alle!!

Ich bin ein ganz frischer Member, kenne mich mit dem Programm aber inzwischen ziemlich gut aus, da ich mich in den letzten Wochen intensiv damit beschäftigt habe.

Daher an erster Stelle ein riesengroßes Lob an Florian, das ganze ist DER HAMMER!!

Nun zu meinem Problem:

Ich möchte folgendes Erreichen:

Der Dateiname soll darauf geprüft werden, ob er zwei oder mehr Bindestriche enthält. Wenn zwei oder mehr enthalten sind, soll "2" in den Kommentar geschrieben werden, ansonsten "3"

Folgendes habe ich entworfen:

Aktion: Tag-Felder formatieren
Feld: COMMENT
Formatstring: $if($eql($regexp(_FILENAME,.-.-.*,2),2),2,3)

Ich habe es auch mit %filename% und %_filename% probiert, er schreibt mir aber immer in alle Kommentar-Felder "3", auch wenn die Namen 2 oder mehr Bindestriche enthalten.

Das Komische ist nun, dass, wenn ich anstatt des Dateinamens den Titel auf Bindestriche prüfe (mit "%title%" anstatt "_FILENAME"), funktioniert es.

Warum kann ich den Dateinamen nicht prüfen??!

Könnt ihr mir den Formatstring verraten, den ich brauche?

Und was noch besser wäre: Ich möchte den Dateinamen auf genau zwei oder genau einen Bindestrich prüfen. Welchen String kann ich da benutzen??

Vielen Dank im voraus für jegliche Hilfe

Euer ÖÖÖ


#2

Man muss schon %-Zeichen verwenden damit das klappt.

Bei mir funktioniert $if($eql($regexp(%_FILENAME%,.-.-.*,2),2),2,3) eigentlich.

Für genau einen Bindestrich:
$regexp(%_FILENAME%,^'['^-']'-'['^-']'$,2)


#3

Vielen Dank für die schnelle Hilfe!!

Beide Funktionen funktionieren!!

Für das Herausfinden von genau einem Bindestrich hatte ich die gleiche Funktion nur ohne ' (Appostrophe) benutzt, das funktionierte nicht.

Von der Benutzung von Appostrophen bei Regulären Ausdrücken ist weder in der mp3Tag-Hilfe noch bei Wikipedia etwas erwähnt. Wofür stehen diese? Wann muss ich Appostrophe setzen, wann nicht?

Vielen Dank für jede weitere Hilfe!!


#4

Eigentlich haben die dort auch nichts zu suchen, aber $regexp() gehört ja zum Scripting-Bereich und dort haben ein paar Zeichen eine Sonderfunktion.
Also muss man sie "escapen".
Steht in der Hilfe bei "Eingebaute Skriptbefehle"


#5

AA OK vielen Dank :slight_smile: