MUT: Umbenennen: erste zwei Wörter vertauschen
Moderators: Hacker, Stefan2, white
-
- Junior Member
- Posts: 7
- Joined: 2015-08-24, 11:37 UTC
MUT: Umbenennen: erste zwei Wörter vertauschen
hallo, ich suche einen Code fürs Umbenenn-Tool, mit dem ich die ersten zwie Wörter des Namens vertauschen und mit Komma trennen kann, also z.B.
"the Beatles - let it be" -> "Beatles, the - let it be"
"Robbie Williams - Millenium" -> "Williams, Robbie - Millenium"
Habe ein bisschen rumprobiert, und kann inzwischen mit Suchen und Ersetzen:
"(.*) (.*) - " -> "$2, $1 -"
die meisten Dateien erfassen. Das funzt aber nur, wenn vor dem Bindestrich keine Doppel- oder sonstwie speziellen Namen (Olivia Newton-John, Lana Del Rey) involviert sind, und auch keine komplexeren Künstlernamen wie z.B.
Alex Gaudino & Kelly Rowland
Robin Thicke Ft. T.I. & Pharrell
Weiß da jemand Rat? Ach ja, und wenn es einen Code für "vertausche Wort 2 und 1" gibt, dann sicher auch einen für "stelle Wort 3 an Position 1", oder? Für die Sarah Michelle Gellars dieser Welt (also 2 Vornamen, ein Nachname)...
wäre ganz schön glücklich, wenn es hier eine Lösung gäbe. Diese Stunden des Umbenennens meiner Karaoke Sammlung kürzen meinen Sommer doch empfindlich.
cheers!
"the Beatles - let it be" -> "Beatles, the - let it be"
"Robbie Williams - Millenium" -> "Williams, Robbie - Millenium"
Habe ein bisschen rumprobiert, und kann inzwischen mit Suchen und Ersetzen:
"(.*) (.*) - " -> "$2, $1 -"
die meisten Dateien erfassen. Das funzt aber nur, wenn vor dem Bindestrich keine Doppel- oder sonstwie speziellen Namen (Olivia Newton-John, Lana Del Rey) involviert sind, und auch keine komplexeren Künstlernamen wie z.B.
Alex Gaudino & Kelly Rowland
Robin Thicke Ft. T.I. & Pharrell
Weiß da jemand Rat? Ach ja, und wenn es einen Code für "vertausche Wort 2 und 1" gibt, dann sicher auch einen für "stelle Wort 3 an Position 1", oder? Für die Sarah Michelle Gellars dieser Welt (also 2 Vornamen, ein Nachname)...
wäre ganz schön glücklich, wenn es hier eine Lösung gäbe. Diese Stunden des Umbenennens meiner Karaoke Sammlung kürzen meinen Sommer doch empfindlich.
cheers!
(\w*)\s(.*)\s-\s(.*)
$2, $1 - $3
klappt schonmal bei Doppelnamen.
Wie sollten Deiner Ansicht nach denn die komlexen Namen gehandhabt werden?
Für Doppelvornamen:
(.*)\s(\w*)\s-\s(.*)
$2, $1 - $3
RegEx ist "gierig" dh es werden sämtliche Buchstaben erfasst, bis das Muster nicht mehr passt. Man kann das ganze natürlich noch expliziter schreiben.
$2, $1 - $3
klappt schonmal bei Doppelnamen.
Wie sollten Deiner Ansicht nach denn die komlexen Namen gehandhabt werden?
Für Doppelvornamen:
(.*)\s(\w*)\s-\s(.*)
$2, $1 - $3
RegEx ist "gierig" dh es werden sämtliche Buchstaben erfasst, bis das Muster nicht mehr passt. Man kann das ganze natürlich noch expliziter schreiben.
Re: Umbenennen: erste zwei Wörter vertauschen
Für Doppel-Vor- und Nachnamen in einem Rutsch geht z.B. auch:
Was davon ausgeht, dass der Vorname immer ein zusammenhängendes Wort ist, optional mit Bindestrich (und immer vorne steht).
Wenn im Namen auch komplexere Dinge vorkommen, wie z.B. Apostroph, füge dieses einfach in die Zeichengruppe ein:
Für komplexere Regeln muss man sich mit Alternativen (a|b) aushelfen, was schon unübersichtlich wird.
Aber für deinen Fall dürfte das ein Ding der Unmöglichkeit sein, schlicht weil du nie und nimmer mit RegEx wissen kannst,
welcher Teil zu welchem Namen gehört.
Dazu bräuchte es schon eine Namens-Datenbank und ein (komplexes) Skript oder Programm.
Ist auch so in der Hilfe erwähnt.
Code: Select all
([\w\-]+)\s(.+)\s-\s(.+)
$2, $1 - $3
Wenn im Namen auch komplexere Dinge vorkommen, wie z.B. Apostroph, füge dieses einfach in die Zeichengruppe ein:
Code: Select all
([\w\-']+)\s(.+)\s-\s(.+)
RegEx ist immer dann gut geeignet wenn es um das Finden von Strings geht.heinzweidrei wrote:Alex Gaudino & Kelly Rowland
Robin Thicke Ft. T.I. & Pharrell
Für komplexere Regeln muss man sich mit Alternativen (a|b) aushelfen, was schon unübersichtlich wird.
Aber für deinen Fall dürfte das ein Ding der Unmöglichkeit sein, schlicht weil du nie und nimmer mit RegEx wissen kannst,
welcher Teil zu welchem Namen gehört.
Dazu bräuchte es schon eine Namens-Datenbank und ein (komplexes) Skript oder Programm.
Hm, TC's RegEx-Engine ist zwar eingeschränkt, aber es stehen doch auch die genügsamen Operatoren zur Verfügung:ZoSTeR wrote:RegEx ist "gierig" dh es werden sämtliche Buchstaben erfasst, bis das Muster nicht mehr passt.
Code: Select all
.*?
.+?
TC plugins: PCREsearch and RegXtract
-
- Junior Member
- Posts: 7
- Joined: 2015-08-24, 11:37 UTC
hallo,
herzlichen Dank für die schnellen Antworten!
Nun hat es bei mir eine ganze Weile gedauert, bis ich eure Vorschläge ausprobieren konnte. Sie sind für Doppelnamen geeignet, und für die "Lana Del Ray"-Fälle, aber nicht für die komplexeren Namen mit mehreren Künstlern oder längeren Bandnamen.
Mein größtes Problem ist dabei noch, dass ich eure Codes nicht verstehe. Wäret ihr wohl so nett, die nochmal "auf deutsch" zu schreiben, also die jeweilige Anweisung? Dann könnte ich selbst etwas herumexperimentieren...
Und ja, Milo1012
1. Doppel-Nachname
2. mehreren Vornamen eines Künstlers
3. mehreren Künstlern oder sowas wie "Bill Haley and the Comets"
jeweils in einen eigenen Ordner zu schaufeln, und dann jeweils eine RegEx Routine drüber laufen zu lassen. Danke für weitere Hinweise!
herzlichen Dank für die schnellen Antworten!
Nun hat es bei mir eine ganze Weile gedauert, bis ich eure Vorschläge ausprobieren konnte. Sie sind für Doppelnamen geeignet, und für die "Lana Del Ray"-Fälle, aber nicht für die komplexeren Namen mit mehreren Künstlern oder längeren Bandnamen.
-eigentlich braucht es nur die NN, VN Umdrehung des ersten Namens, der andere kann so bleiben. Am meisten würde mir also wirklich ein Code helfen, mit dem ich Wort 1 und Wort 2 in die Form "Wort2, wort1" bringen kann; und für mehre Vornamen eben "Wort3, Wort1, Wort2". Möglichst unabhängig davon was danach kommt; Wenn man das Minus in die Abfrage einbaut, werden mitunter die Doppelnamen mit Bindestrich vertauscht.Wie sollten Deiner Ansicht nach denn die komlexen Namen gehandhabt werden?
Mein größtes Problem ist dabei noch, dass ich eure Codes nicht verstehe. Wäret ihr wohl so nett, die nochmal "auf deutsch" zu schreiben, also die jeweilige Anweisung? Dann könnte ich selbst etwas herumexperimentieren...
Und ja, Milo1012
Ich fürchte auch, dass ich es nicht automatisiert hinbekomme. Aktuell ist mein Plan, alle Dateien mitAber für deinen Fall dürfte das ein Ding der Unmöglichkeit sein, schlicht weil du nie und nimmer mit RegEx wissen kannst, welcher Teil zu welchem Namen gehört.
1. Doppel-Nachname
2. mehreren Vornamen eines Künstlers
3. mehreren Künstlern oder sowas wie "Bill Haley and the Comets"
jeweils in einen eigenen Ordner zu schaufeln, und dann jeweils eine RegEx Routine drüber laufen zu lassen. Danke für weitere Hinweise!
-
- Junior Member
- Posts: 7
- Joined: 2015-08-24, 11:37 UTC
Das kann ja auch nicht gehen, denn wie oben gesagt:heinzweidrei wrote:- klappt nicht. macht aus Nat King Cole -> King Cole, Nat
Versuch mal:milo1012 wrote:Was davon ausgeht, dass der Vorname immer ein zusammenhängendes Wort ist, optional mit Bindestrich (und immer vorne steht)
Code: Select all
([\w\-]+\s)+?(.+?)\s-\s(.+?)
hat dann aber wiederum Probleme mit Doppel-Nachnamen, die nicht irgendwie mit Bindestrich und Co. verbunden sind.
Du siehst: es ist eigentlich unmöglich alles in einem Rutsch zu erledigen.
Also: Vorsortieren
TC plugins: PCREsearch and RegXtract
-
- Junior Member
- Posts: 7
- Joined: 2015-08-24, 11:37 UTC
salü und vielen Dank nochmal, Milo1012,
mit dem Vorsortieren habe ich mich ja abgefunden...
aber mit ([\w\-]+\s)+?(.+?)\s-\s(.+?) passiert das gleiche.
Nat King Cole wird zu King Cole, Nat und
Missy Elliot feat. Ludacris wird zu Elliot feat. Ludacris, Missy.
das MUT scheint einfach das erste Wort (und das Komma) nach hinten zu stellen, nicht wie gewünscht hinter das verbleibende erste Wort
Woran liegts wohl?
cheers, Heiko
mit dem Vorsortieren habe ich mich ja abgefunden...
aber mit ([\w\-]+\s)+?(.+?)\s-\s(.+?) passiert das gleiche.
Nat King Cole wird zu King Cole, Nat und
Missy Elliot feat. Ludacris wird zu Elliot feat. Ludacris, Missy.
das MUT scheint einfach das erste Wort (und das Komma) nach hinten zu stellen, nicht wie gewünscht hinter das verbleibende erste Wort
Woran liegts wohl?
cheers, Heiko
Für den ersten Fall hatte ich mich vertan.heinzweidrei wrote:Nat King Cole wird zu King Cole, Nat und
Missy Elliot feat. Ludacris wird zu Elliot feat. Ludacris, Missy...
Dass es für den zweiten Fall nicht funktioniert ist klar, du müsstest mindestens den Punkt zur Zeichengruppe hinzufügen (\w heißt: nur Buchstaben!),
aber das ist ja wieder ein ganz anderes Schema, weswegen ich nicht weiß was du mit:
Code: Select all
Ludacris, Missy Elliot feat. - ...titel...
Deswegen auch hier: gesondert behandeln und anderen Ausdruck nehmen.
Versuch es für den ersten Fall hiermit:
Code: Select all
(([\w\-]+\s?)+)\s(.+?)\s-\s(.+)
$3, $1 - $4
Code: Select all
(([\w\-\.]+\s?)+)\s(.+?)\s-\s(.+)
TC plugins: PCREsearch and RegXtract
-
- Junior Member
- Posts: 7
- Joined: 2015-08-24, 11:37 UTC
nee, ich will natürlich
Elliott, Missy feat. Ludacris ... sorry wennich mich unklar ausgedrückt habe. Wort 3 an Stelle 1 ist für die zwei Vornamen das Ziel (Fall 1), bei den anderen mit mehreren Künstlern soll eigentlich bloß das Gleiche passieren wie bei einfachen Vor-Nachnamen-Kombis, also aus
Wort 1 Wort 2 - Titel
soll Wort2, Wort1 - Titel werden. Das mit dem Punkt war nicht in meinem Denken weil ich (vielleicht naiv) dachte es muss doch ne Ex geben die nur die ersten beiden Wörter erfasst, egal was danach kommt... ?
Elliott, Missy feat. Ludacris ... sorry wennich mich unklar ausgedrückt habe. Wort 3 an Stelle 1 ist für die zwei Vornamen das Ziel (Fall 1), bei den anderen mit mehreren Künstlern soll eigentlich bloß das Gleiche passieren wie bei einfachen Vor-Nachnamen-Kombis, also aus
Wort 1 Wort 2 - Titel
soll Wort2, Wort1 - Titel werden. Das mit dem Punkt war nicht in meinem Denken weil ich (vielleicht naiv) dachte es muss doch ne Ex geben die nur die ersten beiden Wörter erfasst, egal was danach kommt... ?
-
- Junior Member
- Posts: 7
- Joined: 2015-08-24, 11:37 UTC
Langsam wiederholen wir uns...
Einfach nur Wort 1 und Wort 2 vertauschen (vom Anfang aus gesehen) und mit Komma trennen:
Siehe:
https://regex101.com/r/iD1xE4/2
Klappt natürlich nur wenn Vor- und Nachname ein jeweils einzelnes Wort sind (optional mit Bindestrich zusammengesetzt).
ZoSTeR's Vorschlag tat das ja auch schon, allerdings ohne Bindestriche.
Also füge in die eckigen Klammern die Zeichen ein die erlaubt sein sollen.
Was heißt "keine Rückmeldung" konkret? Hängenbleiben? Dateinamen bleiben wie sie sind?
Der Ausdruck funktioniert bei mir ohne Probleme mit einem Dutzend Beispieldateinamen.
Ist vielleicht nicht besonders schnell mit vier Quantifizierern, aber daran sollte es nicht liegen, und es geht mit TC's Engine kaum anders.
Schau dir dazu mal
https://regex101.com/r/hJ1zZ8/2
an.
Dort kannst du dich selbst an RegEx üben.
Optional kannst du auch mein RegXtract-Plug-in zum Offline-Testen nehmen,
allerdings färbt das die Gruppen nicht in unterschiedlichen Farben ein.
Also:heinzweidrei wrote:Wort 1 Wort 2 - Titel
soll Wort2, Wort1 - Titel werden. Das mit dem Punkt war nicht in meinem Denken weil ich (vielleicht naiv) dachte es muss doch ne Ex geben die nur die ersten beiden Wörter erfasst, egal was danach kommt... ?
Einfach nur Wort 1 und Wort 2 vertauschen (vom Anfang aus gesehen) und mit Komma trennen:
Code: Select all
^([\w\-]+)\s([\w\-]+)(.*)
$2, $1$3
https://regex101.com/r/iD1xE4/2
Klappt natürlich nur wenn Vor- und Nachname ein jeweils einzelnes Wort sind (optional mit Bindestrich zusammengesetzt).
ZoSTeR's Vorschlag tat das ja auch schon, allerdings ohne Bindestriche.
Also füge in die eckigen Klammern die Zeichen ein die erlaubt sein sollen.
Unwahrscheinlich...heinzweidrei wrote:an deinem letzten Vorschlag für Fall 1 verschluckt sich übrigens TC komplett, habs jetzt zum vierten Mal versucht, nach Neustart... keine Rückmeldung...
Was heißt "keine Rückmeldung" konkret? Hängenbleiben? Dateinamen bleiben wie sie sind?
Der Ausdruck funktioniert bei mir ohne Probleme mit einem Dutzend Beispieldateinamen.
Ist vielleicht nicht besonders schnell mit vier Quantifizierern, aber daran sollte es nicht liegen, und es geht mit TC's Engine kaum anders.
Schau dir dazu mal
https://regex101.com/r/hJ1zZ8/2
an.
Dort kannst du dich selbst an RegEx üben.
Optional kannst du auch mein RegXtract-Plug-in zum Offline-Testen nehmen,
allerdings färbt das die Gruppen nicht in unterschiedlichen Farben ein.
TC plugins: PCREsearch and RegXtract
-
- Junior Member
- Posts: 7
- Joined: 2015-08-24, 11:37 UTC