staging.inyokaproject.org

Für diese Funktion musst du eingeloggt sein.

Richtiger Umgang mit Strings - Algorithmus entwickeln

Status: Ungelöst | Ubuntu-Version: Server 16.04 (Xenial Xerus)
Antworten |

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Hallo zusammen!

Ich habe mal eine - weitgehend theoretische - Frage zum Schreiben eines Algorithmus mit Strings. Als Testumgebung habe ich meine Hörbücher als Beispiel, da sich diese hervorragend als lange Zeichenketten eignen. Die Dateien sind allerdings alle Dummys, ich habe lediglich mit find und touch die Verzeichnisstruktur kopiert, alle Dateien haben 0 Byte.

1
2
3
4
5
6
7
8
#Beispielpfad 1:
~/TestFolders/Markus Heitz - Oneiros (2015)/Markus Heitz - Oneiros - 14 - Tödlicher Fluch.mp3

#Beispielpfad 2:
~/TestFolders/Wolfgang Hohlbein - Raven/Wolfgang Hohlbein - Raven 1-6/Wolfgang Hohlbein - Raven 1-6 - 05.mp3

#Beispielpfad 3:
~/TestFolders/Hoerspielprojekt/Bermuda 1963 - Folge 2- Die Quelle der Macht/Credits.txt

Mein Ziel war es jetzt Autor, Reihe, Title, Jahr, etc. zu separieren. Ich setze das Ganze aktuell in c++/Qt5 um, ist aber eher nebensächlich.

Generell:

  • Einlesen aller Dateien in ein array (Vgl: find -type f), inkl. Herausfiltern von ., ..

  • Loop durch das array

    • Split in Pfad und Datei (Trennzeichen /)

    • wenn der aktuelle Pfad gleich dem neuen Pfad ist → selbes Hörbuch, weitere Datei

    • sonst: neues Hörbuch, erste Datei

    • Auswerten der Dateiendung (Bild, Text, Playlist, AudioDatei, andere)

    • Im Falle einer Audiodatei

      • split mit Trennzeichen " - " (muss mit Leerzeichen sein, da in Dateinamen auch ein einfacher Bindestrich stehen kann)

Nun habe ich eine StringListe mit den einzelnen Werten. Das Jahr auswerten funktioniert auch nur, wenn ich die Klammern brav gesetzt habe (daher Bsp. 3):

  • Unterfunktion: Jahr ermitteln mit RegExp "([0-9]{4})". Gibt Jahr oder "" aus.

Die weiteren Teile habe ich versucht mittels StringListe.count() einzugrenzen, Pseudo-Code so:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
switch (StringListe.count()) {
  default: 
    Title=StringListe.first()
    break
  case 2:
    Autor=StringListe.first()
    Title=StringListe.last()
    break
  case 3:
    Autor=StringListe.first()
    …

Mein Problem ist jetzt, dass es zig verschiedene Möglichkeiten der Benennung geben kann und ich mich darin verliere. Wie kann man das sinnvoller angehen? (Im Falle der Soundfiles wäre natürlich das Auslesen der Tags sinnig, aber darum geht es ja gerade nicht).

Ich habe lediglich die Anzahl der Items in der Liste, kann prüfen ob ein Jahr gefunden wurde. Mehr nicht. Ich hatte schon überlegt eine Liste mit Autoren anzulegen, allerdings widerspricht das dem eigentlichen Sinn dahinter. Die Hörbücher selbst kann ich ja hervorragend über Tags auswerten.

Den Gedanken mal weitergesponnen: Wenn ich es schaffe Dateinamen sinnvoll zu kategorisieren, wäre ich in der Lage meine Unmengen an Daten ordentlich zu durchforsten und ggf. mit Tags zu versehen oder automatisch in Ordner zu sortieren.

Wie geht ein gelernter Programmierer so ein Problem an?

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

ChickenLipsRfun2eat schrieb:

Mein Problem ist jetzt, dass es zig verschiedene Möglichkeiten der Benennung geben kann und ich mich darin verliere. Wie kann man das sinnvoller angehen?

Was ist denn jetzt das zu lösende Problem? Geht es Dir um einheitliche Umbenennung (ggf. basierend auf den Id-Tags) oder meinst Du, die verschiedenen Möglichkeiten der Benennung könnten ein Problem sein, weil sie bestimmen, wie man den Namen parsen muss?

Den Gedanken mal weitergesponnen: Wenn ich es schaffe Dateinamen sinnvoll zu kategorisieren, wäre ich in der Lage meine Unmengen an Daten ordentlich zu durchforsten und ggf. mit Tags zu versehen oder automatisch in Ordner zu sortieren.

Also ist Umbenennung das Ziel? Oder Anlegen von Tags?

Wie geht ein gelernter Programmierer so ein Problem an?

  1. Anforderungen klären - was ist das Ziel?

  2. Lösungsentwurf (kann aufgeschrieben werden oder nicht)

  3. Umsetzung

  4. Test

Sorry, habe nur Informatik studiert. 😉 Im Ernst, da ich noch nicht verstanden habe, was Dein Punkt 1 ist, kann ich mit den weiteren Punkten im Moment nicht dienen. Ich beobachte oft, dass Punkt 1 das größte Problem ist: oft wird mit einer Umsetzung angefangen, ohne dass die Leute wissen, was das Ziel ist. Ohne das wird es aber immer schwierig. Von daher ist es sinnvoll, erst mal das Ziel klar zu haben.

ChickenLipsRfun2eat Team-Icon

(Themenstarter)

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Ja, ich weiß was du meinst. Es ist schwer Regeln zu finden, die umsetzbar sind.

Ziel wäre: Dateien anhand von Dateinamen zu Kategorisieren. Ich suche also eine Logik, um möglichst viele Regeln abzudecken, um eine ausreichend hohe Trefferquote zu bekommen. Bei dem Pfadbeispiel Hörbücher wäre das z.B. eine Unterteilung nach Autor, Serie, Titel, Tracknummer, etc. bei einem Bild wäre das Ort, Name der Person, etc.,..

Der Dateiname soll also in Einzelteile zerlegt und anhand derer kategorisiert werden. Ich möchte möglichst viele verschiedene Regeln darauf anwenden, die ich im besten Fall anhand des Dateinamens (oder der file-Info) auswählen kann.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

ChickenLipsRfun2eat schrieb:

Ja, ich weiß was du meinst. Es ist schwer Regeln zu finden, die umsetzbar sind.

Wo habe ich das denn geschrieben?

Ziel wäre: Dateien anhand von Dateinamen zu Kategorisieren. Ich suche also eine Logik, um möglichst viele Regeln abzudecken, um eine ausreichend hohe Trefferquote zu bekommen. Bei dem Pfadbeispiel Hörbücher wäre das z.B. eine Unterteilung nach Autor, Serie, Titel, Tracknummer, etc. bei einem Bild wäre das Ort, Name der Person, etc.,..

Eine "Logik, um möglichst viele Regeln abzudecken". Ich bin mir nicht sicher, was Du Dir unter "Regeln" vorstellst. Für mich sieht es so aus, als ob Du Pfadnamen parsen und bestimmte Informationen entnehmen willst.

Der Dateiname soll also in Einzelteile zerlegt und anhand derer kategorisiert werden. Ich möchte möglichst viele verschiedene Regeln darauf anwenden, die ich im besten Fall anhand des Dateinamens (oder der file-Info) auswählen kann.

Dann mach doch mal eine Liste von Kategorien, die Du ermitteln willst. Oder eine Liste pro Menge von Dateinamenerweiterungen. Du willst ja wohl verschiedene Typen unterschiedlich behandeln.

ChickenLipsRfun2eat Team-Icon

(Themenstarter)

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Ich versuche es mal zu beschreiben, worauf ich im Endeffekt hinaus will, wobei mir das wirklich schwer fällt...

Ich habe gegeben Pfad und Dateiname. Aus diesem möchte ich die einzelnen Informationen (StringListe, Dateinfo, Pfad) auswerten, um dann weitere Regeln anzuwenden, auf Grund derer ich dann weitere Einschränkungen machen kann.

Bleiben wir beim Beispiel Hörbücher oben: Ich weiß, dass alles was unterhalb von /../audiobooks liegt ein Hörbuch ist. Daraus folgere ich, dass ich keine Dateien einfach verschieben, umbenennen oder ändern will, sondern nur Dateien anzeigen, die nicht in eines der Schemata passen.

Gültige Dateien wären:

  • Autor - Reihe - Titel - Nummer.[ogg|mp3]

  • Autor - Titel - Nummer.[ogg|mp3]

  • ISBNnummer.[png|jpg]

  • …

Gültige Verzeichnisnamen wären:

  • Autor - Reihe - Titel

  • Autor - Titel

  • Gruppe/Titel

  • Eigenname/Eigenname - Titel

  • …

Die einzelne Datei gehört zu einem Hörbuch und ist entweder ein Text, eine Playlist, eine Audiodatei, ein Coverbild oder "sonstiges". Aus dem Dateinamen kann ich (theoretisch) Autor, Serie, Titel, Tracknummer, Jahr auslesen. Praktisch gelingt mir das aber nur, wenn ich die einzelnen Teile der StringListe zuordnen kann, also brauche ich eine Prüfung. Da die Benennung (weitestgehend) dem selben Schema folgt, brauche ich nur eine Analyse welche der Teile auch im Dateinamen auffindbar sind.

Im Falle des Jahres hilft mir eine regex weiter, im Falle einer Serie/Reihe findet sich meistens "Bd.X" als Kennung wieder, was man auch regexen kann.

Autor, Titel, etc. sind da schwieriger zu erfassen und ich versuche das über die count-Funktion herauszufinden, wie viele der Teile vorhanden sind. Am Beispiel der Hörbücher wären das Minimum 1 und (aktuell) Maximum 9 Teilstrings.

Konkret dazu die Frage: Wie ermittle ich effektiv Autor, Reihe, Titel, wenn vorhanden? Soll ich mir eine Reihe RegEx-Pattern schreiben, die jeden gültigen Fall abdecken und die Splits danach auswerten? Macht das mit switch(count()) Sinn? Im Qt-Manual steht, dass RegEx "expensive" ist im Vgl zu "normalen String-Operationen", was mich ebenfalls verunsichert.

Danach wäre dann der nächste Fall (anderes Verzeichnis, Bilder, etc.) dran. Aber zunächst wollte ich das mal anhand der Hörbücher machen, da diese ja zu 99% korrekt benannt sind. Dort wären "unbenannte", sprich nicht sinnvoll benannte Bilder auszusortieren, Benannte einzusortieren, etc. Falls das einfacher zu verstehen wäre, können wir auch damit anfangen, grundlegend ist es ja das selbe. Parsen von Dateinamen und darauf reagieren.

Ich hoffe das ist nun verständlicher.

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6532

Ist Deine Verzeichnisstruktur variabel tief?

Mein erster Denkansatz währe den gesamten Pfad anhand der "/" Zeichen in Substrings zu zerlegen. Möglicherweise sollte man dabei von rechts anfangen und nicht alles aufteilen. Vielleicht reichen ja 3 Strings:

Pfad_prefix/Dateiverzeichnis/Dateiname.[ogg|mp3]

Vielleicht bräuchtest Du dann noch eine Tabelle, aus der hervorgeht, welche Verzeichnisse wie zu behandeln (zerlegen) sind.

Im Qt-Manual steht, dass RegEx "expensive" ist im Vgl zu "normalen String-Operationen", was mich ebenfalls verunsichert.

Ich denke das wird überbewertet, es sei denn, du musst dafür alle Strings in u32string umwandeln. Du erinnerst Dich vielleicht noch an meinen Zettelkasten? Dort habe ich es mir allerdings leicht gemacht, indem ich einfach die C-regex benutzt habe, was bei UTF-8 Codierung recht gut funktioniert. Auch bei komplizierten Ausdrücken stelle ich bei einer Volltextsuche in 4500 Zetteln keine Verzögerung fest (und das bei einem alten Athlon XP). Dazu muss man nur die Erstellung der Suchvorschrift außerhalb der Suchschleife machen.

MisterIgo

Anmeldungsdatum:
23. April 2009

Beiträge: 947

Zu deinem Beispiel mit Hörbüchern:

Programme wie Puddletag oder Mp3tag, die dafür da sind, Tags und Dateinamen vernünftig zu schreiben, machen das genau so: Ein Muster über den bestehenden Dateinamen legen, um daraus Informationen abzuleiten. Das ist natürlich im komplexesten aber auch vollständigsten Fall ein Regex (und wird vom Benutzer geliefert).

ChickenLipsRfun2eat schrieb:

Den Gedanken mal weitergesponnen: Wenn ich es schaffe Dateinamen sinnvoll zu kategorisieren, wäre ich in der Lage meine Unmengen an Daten ordentlich zu durchforsten und ggf. mit Tags zu versehen oder automatisch in Ordner zu sortieren.

Soweit ich weiß, ist genau das das, was "Desktopsuchmaschinen" wie Baloo (Gnome hat auch etwas in der Richtung) machen: Möglichst automatisch Tags zuordnen (und dabei den Datennamen berücksichtigen, in die Datei reinschauen etc), was leider nur begrenzt gut geht.

ChickenLipsRfun2eat Team-Icon

(Themenstarter)

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Dakuan schrieb:

Ist Deine Verzeichnisstruktur variabel tief?

Ja.

Mein erster Denkansatz währe den gesamten Pfad anhand der "/" Zeichen in Substrings zu zerlegen. Möglicherweise sollte man dabei von rechts anfangen und nicht alles aufteilen. Vielleicht reichen ja 3 Strings:

Pfad von Datei trennen ist recht einfach, allerdings darf man die zugehörigkeit nicht verlieren, daher habe ich das in zwei Listen. Eine "/"-separiert und der Dateiname nochmal " - "-separiert (im obigen Beispiel. Das Trennzeichen lässt sich auch ändern)

Vielleicht bräuchtest Du dann noch eine Tabelle, aus der hervorgeht, welche Verzeichnisse wie zu behandeln (zerlegen) sind.

Du meinst, dass je nach Hauptverzeichnis (audiobooks, pictures, etc.) die Zeichenketten anders getrennt werden? Das brauche ich als ersten "Filter", ja.

Im Qt-Manual steht, dass RegEx "expensive" ist im Vgl zu "normalen String-Operationen", was mich ebenfalls verunsichert.

Ich denke das wird überbewertet, es sei denn, du musst dafür alle Strings in u32string umwandeln. Du erinnerst Dich vielleicht noch an meinen Zettelkasten? …

Klar erinnere ich mich an den. Ich habe den sogar noch ☺
Ich konnte da jetzt auch beim Rumspielen wenig feststellen, was die Geschwindigkeit angeht. Die Schleifen werden so rasend schnell durchlaufen, dass ich da wohl mehr als meine Dummydateien bräuchte, um messbares zu produzieren, oder das mal auf dem Pi laufen lassen, der ja recht schwach auf der Brust ist.

MisterIgo schrieb:

…Ein Muster über den bestehenden Dateinamen legen, um daraus Informationen abzuleiten. Das ist natürlich im komplexesten aber auch vollständigsten Fall ein Regex (und wird vom Benutzer geliefert).

Das spräche für eine StringListe mit regex gegen die ich den Dateinamen prüfen lasse.

…"Desktopsuchmaschinen" wie Baloo…

Danke. Danach könnte ich tatsächlich auch mal gucken, wenn ich deren Code verstehe ☺

Danke euch für die Denkanstöße.

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6532

Klar erinnere ich mich an den. Ich habe den sogar noch ☺

Oh, wie peinlich 😳 In der Version sind etwa so viele Bugs drin, wie ein Straßenköter Flöhe hat. Merkt man aber nur bei intensiver Benutzung.

... oder das mal auf dem Pi laufen lassen, der ja recht schwach auf der Brust ist.

Unterschätz den nicht. Allerdings bei Qt könntest Du Recht haben.

ChickenLipsRfun2eat Team-Icon

(Themenstarter)

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Dakuan schrieb:

Klar erinnere ich mich an den. Ich habe den sogar noch ☺

Oh, wie peinlich 😳 In der Version sind etwa so viele Bugs drin, wie ein Straßenköter Flöhe hat. Merkt man aber nur bei intensiver Benutzung.

Da muss dir nix peinlich sein. Ich nutze ihn ja nicht intensiv 😀

Unterschätz den nicht. Allerdings bei Qt könntest Du Recht haben.

Alternativ habe ich noch mein Jolla und nen alten Samsung R60plus. An Testgeräten mangelt es nun weniger. Und die Qt-Programme sind fertig kompiliert genauso flott wie andere Konsolenprogramme. Bibliotheken verwende ich eigentlich immer bei sowas.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17630

ChickenLipsRfun2eat schrieb:

Generell:

  • Einlesen aller Dateien in ein array (Vgl: find -type f), inkl. Herausfiltern von ., ..

  • Loop durch das array

    • Split in Pfad und Datei (Trennzeichen /)

Falls Du das wirklich machen willst: Nicht aus find rausgehen, und in in ein Array rein. Das Array hat wenig, sehr wenig, was find nicht hat.

Find ist quasi schon ein Iterator, ja das ist bei Arrays auch kein Ding. Aber find weiß, dass das einzelne Stück eine Datei ist während ein Array nur Zeichenketten sieht.

Schau Dir mal die -printf-Option von find an, da kannst du quasi alles rausholen ohne mit regulären Ausdrücken hantieren zu müssen.

1
2
3
4
5
6
7
8
9
find sachfremd/ -printf "Pfad:(%h)\tDatei:(%f) Size:(%k)\n" 
Pfad:(sachfremd)	Datei:(Permutation.png) Size:(36)
Pfad:(sachfremd)	Datei:(FormelBauer2.scala) Size:(12)
Pfad:(sachfremd)	Datei:(Permutation-inkscape-print.pdf) Size:(16)
Pfad:(sachfremd)	Datei:(maccis.sh) Size:(12)
Pfad:(sachfremd)	Datei:(Permutation-convert.pdf) Size:(212)
Pfad:(sachfremd)	Datei:(Permutation.svg) Size:(36)
Pfad:(sachfremd)	Datei:(pickNofM.sh) Size:(12)
Pfad:(sachfremd)	Datei:(Permutation.svgz) Size:(12)

Als zweites solltest Du mal - besonders wenn Du Massenumbenennungen im Schilde führst, mal mehrere Dateien in Thunar markieren, und 'umbenennen' wählen, da kommt ein ausgesprochen nützlicher Dialog hoch, wo man mit regulären Ausdrücken umbenennen kann, nummerieren und weiteren Optionen, die ich noch nicht ausprobiert habe.

Digitalkamerafotos CIMG01345.JPG -1375.JPG kann man da prima in portugal-1345.JPG ... umbenennen. In der Vorschauansicht erkennt an ungefähr, um was es sich handelt, und kann sinnvolle Namen auf einen Rutsch vergeben.

Mein Problem ist jetzt, dass es zig verschiedene Möglichkeiten der Benennung geben kann und ich mich darin verliere. Wie kann man das sinnvoller angehen? (Im Falle der Soundfiles wäre natürlich das Auslesen der Tags sinnig, aber darum geht es ja gerade nicht).

Hängt davon ab, wonach Du suchen willst. Solange die Dateien nicht auf einen neuen Datenträger verschoben oder bearbeitet werden bleibt das Erstelldatum ja erhalten. Da findest Du sie auch mit einem entsprechenden Befehl.

Je nach dem erzeuge ich aber auch manchmal Dateinamen mit Datum drin. Daten, die immer wieder das gleiche sind, und sich eben nur durch das Datum gut unterscheiden lassen.

Würde ich jedes Jahr nach Portugal fahren und Fotos machen, dann hätte ich wohl Ordner Portugal/2017 ../2016 usw. Kurze Namen haben aber auch Vorteile - man sieht mehr auf einmal.

Den Gedanken mal weitergesponnen: Wenn ich es schaffe Dateinamen sinnvoll zu kategorisieren, wäre ich in der Lage meine Unmengen an Daten ordentlich zu durchforsten und ggf. mit Tags zu versehen oder automatisch in Ordner zu sortieren.

Wie geht ein gelernter Programmierer so ein Problem an?

Er fragt einen Bibliothekar. ☺

ChickenLipsRfun2eat Team-Icon

(Themenstarter)

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

user_unknown schrieb:

Falls Du das wirklich machen willst: Nicht aus find rausgehen, und in in ein Array rein. Das Array hat wenig, sehr wenig, was find nicht hat.

Ich arbeite da gerade mit c++/Qt5, nicht mit find, das war nur ein Beispiel, was im array enthalten ist. Mein Problem ist ja nicht das Auslesen der Dateinamen/Pfade, sondern eher das weiterverarbeiten der Dateinamen als Strings, um herauszufinden, um was für eine Datei es sich handelt.

Als zweites solltest Du mal - besonders wenn Du Massenumbenennungen im Schilde führst ... umbenennen. In der Vorschauansicht erkennt an ungefähr, um was es sich handelt, und kann sinnvolle Namen auf einen Rutsch vergeben.

Diese grobe Vorsortierung habe ich mit Dolphin gemacht. Da gibt es auch Massenumbenennungen. Wirklich sehr praktisch ☺

Hängt davon ab, wonach Du suchen willst. Solange die Dateien nicht auf einen neuen Datenträger verschoben oder bearbeitet werden bleibt das Erstelldatum ja erhalten. Da findest Du sie auch mit einem entsprechenden Befehl.

Die Bilder nach Erstelldatum benennen hatte ich tatsächlich auch im Hinterkopf. Bei Bildern schwebt mir aber tatsächlich eher etwas nmit tesseract o.ä. vor, um Texte auf Bildern zu erkennen. Andere, sehr große Baustelle ☺

Je nach dem erzeuge ich aber auch manchmal Dateinamen mit Datum drin. Daten, die immer wieder das gleiche sind, und sich eben nur durch das Datum gut unterscheiden lassen.

So handhabe ich das mit Rechnungen, etc. im PDF.

Er fragt einen Bibliothekar. ☺

😬

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6532

Ich habe nochmal über Dein Problem nachgedacht. So ganz trivial ist das ja nicht. Aber bevor Du die einzelnen Substrings nochmal zerlegst, solltest Du das Ganze sortieren damit du hier:

  • wenn der aktuelle Pfad gleich dem neuen Pfad ist → selbes Hörbuch, weitere Datei

keine Überraschungen erlebst. Ich kenne ja Qt nicht, und weiß daher nicht ob du die Namen schon sortiert bekommst.

Das Jahr auswerten funktioniert auch nur, wenn ich die Klammern brav gesetzt habe (daher Bsp. 3):

Da könnten Regex helfen: 4 Ziffern und optionale Klammern vorne und hinten (müsste ich jetzt aber auch erst nachsehen).

ChickenLipsRfun2eat Team-Icon

(Themenstarter)

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Dakuan schrieb:

So ganz trivial ist das ja nicht.

Ja. Leider. Aktuell denke ich mir, dass eine Vorsortierung mittels einer Regex-Liste Sinn machen könnte, allerdings wird das ziemlich viele Prüfungen nach sich ziehen.

…keine Überraschungen erlebst. Ich kenne ja Qt nicht, und weiß daher nicht ob du die Namen schon sortiert bekommst.

Ja, die müssen sortiert werden. Entweder mit Standard-sort oder eben per Qt-Funktion. Bei den Hörbüchern nicht, weil die eh in einzelnen Unterverzeichnissen sind, generell aber schon. Ist aber "inklusive" die Methode.

Da könnten Regex helfen: 4 Ziffern und optionale Klammern vorne und hinten (müsste ich jetzt aber auch erst nachsehen).

Ja, RegEx und Qt sind so bisl doof. Das mit dem Jahr mache ich schon, allerdings mit den Klammern, damit bspw. "Bermuda 1963" nicht das Jahr bekommt. Ist ja aus zweitausendirgendwas.

RegEx in Qt sind allerdings seltsam. Ein

1
(?!.*\/)\w{2,}\ \w{2,}\ -\ .*\ \(\d{4}\)

funktioniert da nicht, weil er angeblich \w, etc. nicht erkennt. Muss ich noch mal ran.

Antworten |