Regex: Text ab bestimmter Zeichenfolge (Datum)

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
ArcticBears
Beiträge: 82
Registriert: 21.07.2012 00:03:59
Lizenz eigener Beiträge: GNU General Public License

Regex: Text ab bestimmter Zeichenfolge (Datum)

Beitrag von ArcticBears » 11.11.2013 14:37:27

Hi,

das hat man nun davon, dass man sich nie so richtig mit regex anfreunden wollte. Da stehe ich nun doof da.
Aber ich bin ja lernfähig und frage hier mal höflich nach Hilfe. :THX:

Ausgangslage:
Ich möchte meine Filmsammlung mit "Data Crow" (http://www.datacrow.net) zum Verwalten einlesen.
Nun bietet das Programm die Möglichkeit, die Internet-Filmdatenbanken automatisch nach Informationen abzusuchen. Dafür kann jeweils der Dateiname als Titel des Films zum Suchen verwendet werden. Mittels eines regulären Ausdrucks können Teile aus dem Dateinamen gelöscht werden, so daß ImDB.de u.a damit auch was anfangen können.

Grundlage der Dateinamen sind hier die üblichen OTR-Namen, also z.B.:
Shrek_Oh_du_Shrekliche_11.12.08_15-55_orf1_20_TVOON_DE.mpg-cut.1.avi
Robocop_3_12.01.17_01-10_kabel1_96_TVOON_DE.mpg-cut.1.avi
Star_Trek_VIII_12.04.15_18-50_uke4_130_TVOON_DE.mpg-cut.1.avi
Wie man sieht, können hier Filmnamen auch mit Teil-Nummern auftauchen, entweder normal oder aber als auch mit römischen Ziffern

Aufgabe des RegExp:
Definiere Alle Zeichen rechtsliegend ab dem 1. Zeichen vor dem Datumsstring, welches ein Unterstrich ist,
dabei ist der Datumsstring imho: [0-9][0-9]\.[01][0-9]\.[0-3][0-9]
Oder?

Geht das irgendwie?
Idee: _[0-9][0-9]\.[01][0-9]\.[0-3][0-9]_*
...geht aber leider nicht :roll:
PC-Daten:
(1) MS-7345, Intel(R) Core(TM)2 Quad CPU Q6600@2.40GHz, 4GB RAM, NV43 [GeForce 6600]
(2) HP-17-cp0275, AMD Ryzen 7 5700U, 16GB RAM
(3) Raspberry PI400, 4GB RAM

uname
Beiträge: 12403
Registriert: 03.06.2008 09:33:02

Re: Regex: Text ab bestimmter Zeichenfolge (Datum)

Beitrag von uname » 11.11.2013 14:45:59

Die Idee war schon ganz gut. Korrekt eher so:

Code: Alles auswählen

sed 's/_[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9].*//' dateiname
Gewisse Sonderfälle wie Datum im Filmnamen werden natürlich nicht korrekt behandelt ;-)
Im Nachgang könntest du noch die Unterstriche durch Leerzeichen oder sonstwas austauschen. Dafür kannst du aber neben "sed" auch "tr" nehmen.

Wenn das Programm selbst Regex interpretieren kann musst du das sed-Zeug weglassen. Leider weiß ich jedoch nicht ob in deinem Programm die Substitution genauso aussieht wie bei sed.

Benutzeravatar
ArcticBears
Beiträge: 82
Registriert: 21.07.2012 00:03:59
Lizenz eigener Beiträge: GNU General Public License

Re: Regex: Text ab bestimmter Zeichenfolge (Datum)

Beitrag von ArcticBears » 11.11.2013 15:51:00

Huiiii, das ging aber schnell mit der Antwort. Danke.

Inzwischen war ich natürlich nicht untätig und habe "txt2regex" und "kodos" entdeckt. Das sind ja genau die Teilchen, die mir beim Bau helfen. (so mal als Tipp für die, die zufällig bei der Suche nach ähnlichem hier bei diesem Artikel landen...) "visual-regexp" ist da schon etwas komplexer....

So bin ich dann auch drauf gekommen, dass ich den Punkt vor dem "*" vergessen hatte.
Lt. "kodos" wäre '_[0-9][0-9]\.[01][0-9]\.[0-3][0-9]_.*' schon ok, aber leider geht das auch nicht bei DataCrow.

sed selbst kann ich da ja nicht einsetzen, da der Autor von DataCrow hier ja nur ein RegEx verlangt.
Und meine Dateiensammlung möchte ich natürlich auch nicht umbenennen, denn die Dateinamen haben ihren ganz bestimmten Zweck!

Naja. Ich habe mal den Autor angeschrieben. Vlt. mag der sich hier ja mal dazu äußern?!
Oder ich finde selbst den zuständigen Programmteil in der Source, aber von Java habe ich auch nicht gerade viel Ahnung.
Oder es findet sich jmd. der schon vor dem gleichen Problem stand mit DC otr-Dateien zu importieren....?
PC-Daten:
(1) MS-7345, Intel(R) Core(TM)2 Quad CPU Q6600@2.40GHz, 4GB RAM, NV43 [GeForce 6600]
(2) HP-17-cp0275, AMD Ryzen 7 5700U, 16GB RAM
(3) Raspberry PI400, 4GB RAM

Antworten