Löschen bestimmter Einzeleinträge innerhalb eines Multivalue-Tagfeldes

Zunächst einmal ein dickes Lob an die Entwickler des Programms und die "String-Experten" im Forum. Ich bin schon etwa 2 Jahre dabei und konnte mit mp3Tag bislang alles erledigen was ich wollte. Dabei haben mir ähnlich gelagerte Posts stets geholfen. Mit etwas Grundverstand konnte ich die Strings passend für mich abwandeln. Diesmal bin aber nicht fündig geworden und hoffe nun auf Hilfe eines "String-Experten".

Ich habe aufgrund früherer Probleme von Abspielprogrammen mit den Tagfeldern ComposerSort und ConductorSort in das Feld ArtistSort bei Klassikdateien immer noch den Komponisten bzw. Dirigenten eingetragen. Dies jeweils mit dem Zusatz [Composer] bzw. [Conductor]. Somit war mir quasi über Umwege eine Sortierung nach diesen beiden Kriterien möglich.

Mittlerweile funktionieren Composer- und ConductorSort in JRiver einwandfrei und ich möchte die Komponisten und Dirigenten aus dem ArtistSort Tagfeld entfernen. Da ich ca. 8.000 Klassikdateien habe, kommt eine manuelle Lösung nicht infrage.

So sieht es aktuell aus:

Mozart, Wolfgang Amadeus [Composer]; Artist1; Artist2; Artist3; Karajan, Herbert von [Conductor]

So soll es aussehen:

Artist1; Artist2; Artist3

Der Komponist steht übrigens immer als erstes, der Dirigent aber an verschiedenen Stellen (also nicht nur am Ende)

Beide tragen aber immer die Zusätze [Composer] bzw. [Conductor].

Hat jemand eine Idee ?

Filter: ARTISTSORT MATCHES "[(Composer|Conductor)]"

Extract Composer
Aktion: Tag-Feld formatieren
Feld: COMPOSERSORT
Formatstring: $regexp('; '%ARTISTSORT%';','.;\s([^;]+?)\s[Composer];.','$1')

Extract Conductor
Aktion: Tag-Feld formatieren
Feld: CONDUCTORSORT
Formatstring: $regexp('; '%ARTISTSORT%';','.;\s([^;]+?)\s[Conductor];.','$1')

Remove Composer
Aktion: Tag-Feld formatieren
Feld: ARTISTSORT
Formatstring: $trim($regexp('; '%ARTISTSORT%';',';\s([^;]+?)\s[Composer];',';'),'; ')

Remove Conductor
Aktion: Tag-Feld formatieren
Feld: ARTISTSORT
Formatstring: $trim($regexp('; '%ARTISTSORT%';',';\s([^;]+?)\s[Conductor];',';'),'; ')

DD.20120905.2107.CEST

Die Funktion $regexp(String,RegularExpression,Replacement[,IgnoreCase]) kann die Groß-/Kleinschreibung beachten oder ignorieren, was einstellbar ist durch den vierten optionalen Parameter:
IgnoreCase ...
... 0 = beachten
... 1 = ignorieren

DD.20120907.0841.CEST

Vielen, vielen Dank DetlevD, es hat alles so geklappt, wie gewünscht. Zunächst hat das Entfernen nicht funktioniert, was aber daran lag, dass [COMPOSER] und [CONDUCTOR] in GROßBUCHSTABEN bei mir geschrieben sind. Da ich nicht wusste, dass dies Auswirkungen hat, hatte ich die Vorgabe so gemacht.

Aber, dass die anfängliche Disfunktionalität damit zusammenhängen könnte, darauf bin ich ganz von allein gekommen ... also immerhin :rolleyes:

Ansonsten zeigt mir Dein String, dass ich eben doch nur User bin, weil die Formel für mich in großen Teilen unverständlich ist. Habe mich entschlossen die Community jetzt via PayPal zu unterstützen. Dann kann ich auch mal "supporten".
Ich zahle soviel Geld für kommerzielle Software und selten gibt es ein solch' super Support, außer vielleicht noch bei JRiver, nur ist da die Sprachbarriere bei der Problembeschreibung etwas hinderlich.

Eine Bitte hätte ich aber noch: Wie müsste denn die Formel lauten, wenn im Eintrag des Dirigenten nur der Zusatz "[CONDUCTOR]" gelöscht werden soll ?

Vorher:

ArtistSort1; ArtistSort2; Karajan, Herbert von [CONDUCTOR]; ArtistSort3

Nachher:

ArtistSort1; ArtistSort2; Karajan, Herbert von; ArtistSort3

Es wäre sehr sehr freundlich, wenn Du da noch einen Vorschlag hättest ...

Ginge da nicht einfach eine Aktion vom Typ "Ersetzen" mit dem Such-String
" [Conductor]" (ohne die Anführungstriche - die sind nur zum verdeutlichen des Blanks am Anfang)
und einem leer gelassenen Ersetzen-String?

Wie ohrenkino schon sagte ...
... lässt sich das einfach durch das "normale Ersetzen" erledigen.
Ersetze ' [CONDUCTOR]' durch %DUMMY%, also durch nichts.
Benutze ...
"Aktion Ersetzen"
oder ...
"Aktion Tag-Feld formatieren" mit Funktion $replace()

DD.20120906.1940.CEST

Hat genau so funktioniert, vielen Dank an DetlevD und Ohrenkino, Ihr habt mir sehr geholfen und das blitzartig !!!! :smiley: :smiley: :smiley:

Ich möchte anmerken, dass es sich - abweichend von der Überschrift - hier nicht um ein echtes "multi-value" Tag-Feld gehandelt hat, sondern um eine mit der Trennzeichenkette '; ' separierte Liste in einem normalen Tag-Feld, oder?

DD.20120907.0857.CEST