Hallo,
ich bräuchte mal eure hilfe.
ich habe einige dateien in denen im id3tag im titel nach einer ] noch informationen kommen die ich gerne löschen würde wollen.
z.b. Artist - titel [xyz version] bla bla bla
nun wäre mein anliegen, alles nach der ] zu entfernen.
ich habe ein ähnliche Problem: und zwar stehen immer wieder sachen wie [Exclusive], [Album] etc. pp. in meinen Tags und ich würde gern diese Sachen entfernen komme aber nicht wirklich weiter.
D.h. ich schaffe es zwar die Strings durch einen anderen String zu ersetzen aber eben nicht zu entfernen. - Wer kann helfen?
Bsp.: "Title [Album Version]" --> "Title"
PS: Ich würde mich auch freuen, wenn mir jemand mal den Term (.*\]).* von oben erklären könnte, vielleicht komm ich ja dann auch iwann dahinter, wie das funktioniert ... - Oder gibt es sogar hier irgendwo ein Tutorial zu den Regulären Ausdrücken?
Aktion: Ersetzen mit regulärem Ausdruck
Feld: TITLE
Regulärer Ausdruck: (.*) (\[.*)
Treffer ersetzen durch: $1
Der Inhalt des ersten Subpattern wird ersetzt mit sich selbst ($1)
Der Inhalt des zweiten Subpattern (ab der ersten eckigen Klammer) wird mit nichts ersetzt.
erstmal Danke für die Antwort, aber das löst nicht ganz mein Problem. - Ich hab es leider nicht genau erklärt. - Die Klammer steht auch manchmal innerhalb des Tags:
D.h. es soll ausschließlich und genau der Teil " [Album Version]" (also mit dem vorangehenden Leerzeichen vor der Klammer) entfernt werden.
Wie kann man das umsetzen? - Danke!
Edit: Mal noch zur weiteren Überlegung - das Ganze soll ja auf eine Masse von titeln angewendet werden, wo bei manchen auch wichtige Info's in den eckigen Klammern stehn, d.h. also es muss genau geprüft werden, ob denn auch " [Album Version]" im Tag zu finden ist und es dürfte also nicht nur nach den eckigen Klammern gesucht werden.
leider muss ich aber berichten, dass der Formatstring nicht funktioniert. - D.h. nach Anwendung auf die Tags steht der Inhalt noch genauso drin ... ...
Liegt der Fehler bei mir, oder ist ein Fehler im Formatierbefehl?
Wenn in dieser Zeichenkette
'TitleVorn [Album Version] [weitere Info] TitleHinten'
die Teilzeichenkette
'[Album Version] '
gelöscht also durch Nichts ersetzt werden soll, dann gibt es in Mp3tag mehrere einfache Möglichkeiten, z. B.
(.]). besteht prinzipiell aus zwei Teilen. Der Teil in der Klammer und der danach. Der Ausdruck an sich beschreibt das Aussehen vom String, den du bearbeiten willst. ".]" steht für eine beliebig lange Kette aus beliebigen Zeichen auf die ein "]" folgt. "." steht für eine beliebig lange Kette aus beliebigen Zeichen. "$1" liefert die Zeichen, die durch den Ausdruck in den runden Klammern beschrieben werden, wie newser ja schon erklärt hat.
Ein Tutorial zu regulären Ausdrücken gibt es hier nicht, allerdings sind im Internet ein paar und die Hilfe kann eventuell weiterhelfen.
"matchen" heißt soviel wie "steht für". "Match" ungefähr "Übereinstimmung".
Danke für den Tip! - Ich hatte es genau über diese Funktion schon selber probiert, war aber an dem leeren String gescheitert (siehe oben) - ich bin nicht auf die Idee gekommen einfach nichts hinzuschreiben ...
Also vielen Dank - so klappt es jetzt!
Hallo gnor,
also die Hilfe von Mp3Tag hab ich mir schon angeschaut, nur leider bringt mich die nicht wirklich weiter ... Was mir helfen würde wär ein Step-by-Step Einstieg, der ganz klein beginnt und man so langsam auch komplexere Sachen auf die Reihe bekommt.
Aber ich werde mal nach den von dir angesprochenen Tutorials im Web suchen.
Danke auch dir!
Weiterhin allen meinen Helfern einen schönen Sonntag noch! - Danke und Liebe Grüße!
Diese Verwirrung kommt immer wieder deshalb auf, weil es in der Mp3tag Skriptsprache eine leere Zeichenkette nicht gibt, d. h. es fehlt die grundlegende abstrakte Definition für eine leere Zeichenkette.
Mp3tag kennt zwar Literale, die in Hochkomma eingeschlossen werden (können oder sollten), z. B. 'Testliteral', aber man kann kein leeres Literal schreiben. Das ist, wie ich meine, einer von mehreren Designfehlern in der Mp3tag Skriptsprache.
... aber ich muss das Thema nochmal hoch holen ... Und zwar habe ich ein Problem mit dem entfernen von Informationen ab einem Slash (/). Und zwar verwende ich im Moment den Befehl
(.*)/(.*) -> $1
und das Problem ist, dass ja grundsätzlich alles ab dem letzten Slash im Tag gelöscht wird.
Ich bräuchte aber vielmehr eine Aktion die nur den nachfolgenden Text eines Slashs löscht, der zuvor genau entsprechend in eckigen Klammern stand und diese Erkennung muss absolut dynamisch erfolgen, da die vielen vielen Fälle ja gar nicht abzudecken sind.
Wenn du den regulären Ausdruck so benutzt hast wie definiert, dann müsste bei deinem neuen Beispiel folgendes Resultat erscheinen:
The Circle [CD ALBUM]/CD ALBUM
Also ohne Änderung, weil die Eingabezeichenkette nicht zum Muster passt.
Mit "The-Circle [CD Album]/CD Album" kommt dann heraus "The-Circle CD ALBUM".
Das ist eben so, wenn man sich das eine wünscht und dann doch was anderes will.
DD.20100104.0406.CET
Versuche es 'mal damit: $regexp('The Circle [CD Album]/CD Album','^(.+\s+)(?:\[(.+?)\])\/\2(?:|(\s+.+))$','$1$2$3')
Da dein letzter Lösungsansatz in meiner Anwendung wieder zu einem ähnlichen Ergebnis wie oben führt, glaube ich einfach ich hab mein Problem nicht genau genug geschildert und dass wir irgendwie aneinander vorbei reden ... ...
Also mein Problem ist, dass ich ganz oft Tags habe, in denen eine eckige Klammer [ ] vorkommt und hinter dieser Klammer nach einem Slash / noch einmal die selbe Info wie in der Klammer steht. Ich möchte nun generell bei diesen Fällen die doppelte Info nach dem Slash entfernen. Dazu müstte man meines Erachtens untersuchen, ob das Muster
... [beliebiger Text]/selber Text wie in der Klammer ... (Bsp.: ... [aab cd]/aab cd ...)
konvertiert wird. Es soll also quasi der doppelt vorkommende Text nach dem Slash, sowie das Slash selber entfernt werden.
Da aber keines Falls vorhersehbar ist, was in der eckigen Klammer stehen kann, kann man keine allgemeine "Löschliste" anlegen, sondern die Aktion müsste selbstständig erkennen ob ein String aus dem vorederen Teil des Tagfeldes (der zudem in eckigen Klammern steht) noch einmal nach den Zeichen "]/" wiederholt wird. Falls ja, sollte das Slash / sowie der wiederholte Stringteil entfernt werden.
(Die eckigen Klammern sollen aber in jedem Fall erhalten bleiben.)
Mal ein paar Beispiele:
"The Circle [CD Album]/CD Album" -> "The Circle [CD Album]"
"Lovin' You [Europe / Oz 4 Trk]/Europe / Oz 4 Trk" -> "Lovin' You [Europe / Oz 4 Trk]"