Hallo liebes Forum und liebe Tüftler,
ich bin selbstständig und nutze "gerade mal" die coronabedingte Ruhe, um mein elektronisches Archiv ein bisschen zu verfeinern.
Da es hier bereits einige Einträge zu der von mir genutzten Software gibt, habe ich mich auch mal hier angemeldet, denn ich tüftle, bastle und recherchiere seit 3 Tagen herum, ohne ein nennenswertes Ergebnis zu erreichen. Ich bin allerdings was REGEX betrifft eher die absolute Niete und habe mir das "Wissen" durch tagelanges Tüfteln und Ausprobieren angeeignet.
SITUATION:
Ich nutze seit ca. 1,5 Jahren EcoDMS, mit dem ich meine gesamte Ablage elektronisch archiviere.
In die Erkennungsmasken müssen manuell Erkennungsmerkmale eingepflegt werden, damit die eingescannten Dokumente entsprechend archiviert und auf unterschiedliche Ablageordner "verteilt" werden.
Die diesbezüglichen Informationen beim Anbieter und in dessen Handbuch sind jedoch extrem ... dürftig. Genauso wie meine eigenen Kenntnisse ...
In die bisherigen Erkennungsmasken habe ich selbst jeweils u.a. den folgenden REGEX eingepflegt:
REGEX:\b(Vorname)\b
REGEX:\b(Nachname)\b
Hierbei handelt es sich um den Vor- und Nachnamen meiner Klienten (mögliche unterschiedliche Schreibweisen habe ich mit "|" eingepflegt, damit diese nicht ständig "hängenbleiben" also z.B. REGEX:\b(Meyer|Meier)\b.
Wenn diese erkannt werden, wird automatisch in entsprechende Ablageordner (pro Klient) archiviert.
Das funktioniert auch ganz wunderbar - bis zu 95% der eingescannten Belege werden i.d.R. erkannt und automatisch archiviert.
Durch die Umstellung auf elektronische Archivierung habe ich nach und nach auch alle alten Belege eingescannt und archiviert.
Hierdurch umfasst der aktuelle Datenbestand bereits ca. 40.000 Dokumente (...) verteilt auf ca. 80 Klienten (~ ca. 500 Belege pro Klient).
Die alten Belege tauchen im EcoDMS dann jedoch "nur" unter dem Archivierungsdatum auf - das eigentliche Belegdatum steht "nur" im Beleg selbst.
Eine chronologische Sortierung ist somit nicht möglich.
Diese ist jedoch notwendig, da zwar die Suchmaske des Programms Belege zuverlässig findet und heraussucht, es kommt aber immer mal wieder vor, dass ich aufgefordert werde, die Belege von z.B. Mai bis einschließlich Juli 2019 vorzulegen. Und das ist im Moment nicht so ohne Weiteres möglich ...
Nun habe ich in die "Ruhe" der vergangenen Tage dazu genutzt, einen weiteren REGEX zu basteln, der mir beim Archivieren das im Beleg stehende Datum ausliest und zurückgibt.
Aufgrund der doch recht vielfältigen Datumsformate in den Belegen (T.M.JJJJ, T.MM.JJJJ, TT.MM.JJ, TT.MM.JJJJ usw.) ist dieser REGEX unfassbar lang, funktioniert aber einwandfrei (!).
Es werden alle gängigen Datumsformate ausgelesen und in der Form JJJJ-MM-TT zurückgegeben, wodurch dann eine chronologische Sortierung möglich wäre.
PROBLEM:
Einige der Belege enthalten jedoch ein Datum in der Form (T)T. MMMM JJJJ, also mit ausgeschriebenem Monat z.B. 4. April 2017, 24. Mai 2016.
Dieses Format wird auch über den von mir ausgetüftelten REGEX ausgelesen, allerdings dann jedoch in der Form "2016-Mai-24" zurückgegeben.
Hierdurch ist eine "klassische" chronologische Sortierung natürlich nicht mehr möglich, da dann ja alphabetisch sortiert wird (also käme der April vorm Februar, der März nach Juni usw.) und die übrigen chronologisch sortierten Belege wären irgendwo davor und dahinter einsortiert.
MEINE FRAGE:
Vielleicht denke ich da etwas zu sehr an Excel, Access usw. aber gibt es im REGEX auch die Möglichkeit, nach einer Zeichenkette zu suchen und wenn diese gefunden wird, dann einen anderen von mir vordefinierten (!) Wert zurückzugeben?
Dass automatisch Werte z.B. vor oder nach der gesuchten Zeichenkette zurückgegeben werden können, habe ich schon herausgefunden, aber die "Monatszahl" taucht ja in dem Dokument nicht auf ...
Um es mal mit "Wenn dann" auszudrücken:
Wenn das Wort "April" gefunden wird, dann gib "04" zurück,
wenn das Wort "Mai" gefunden wird, dann gib "05" zurück usw.
Wenn dies ginge, hätte ich die Möglichkeit, durch meinen (ewig langen) o.g. REGEX z.B. den 24. Mai 2016 nicht mehr als 2016-Mai-24 zurückzuerhalten, sondern den gewünschten 2016-05-24.
Ich bin mir im Klaren, dass ich dann ALLE bisher archivierten Dokumente noch einmal klassifizieren müsste ... aber da ich das benötige und momentan die Zeit und Ruhe dafür da ist, muss ich wohl in den "sauren Apfel" beißen.
Ist das zu kompliziert? Bin ich hier überhaupt richtig?
So oder so bedanke ich mich schonmal im Voraus bei allen Lesern/ Tüftlern.
VG aus Soest,
Jan Z.
REGEX um alternativen Text auszugeben
Regex, also reguläre Ausdrücke, dienen dazu Regeln aufzustellen um eine oder mehrere Zeichenketten in einer Zeichenkette zu finden.
Das von dir beschriebene Verhalten, nämlich das neue Zusammenstellen von Teilen einer gefundenen Zeichenkette, ist bereits mehr als das, was ein regulärer Audruck zu leisten vermag. Er dient dazu eine Schablone/ein Muster zu haben, um die entsprechenden Teile zu finden. Da hört es dann aber auch auf.
Den Rest muss irgendwie deine Software tun.
Das von dir beschriebene Verhalten, nämlich das neue Zusammenstellen von Teilen einer gefundenen Zeichenkette, ist bereits mehr als das, was ein regulärer Audruck zu leisten vermag. Er dient dazu eine Schablone/ein Muster zu haben, um die entsprechenden Teile zu finden. Da hört es dann aber auch auf.
Den Rest muss irgendwie deine Software tun.
OK, vielen Dank schonmal für die Antworten ...
Dann weiß ich jetzt zumindest, dass ich zwar nicht mein gewünschtes Ergebnis bekommen werde, weiß aber auch, dass ich nicht "zu blöd" war, die gewünschte Lösung zu finden, sondern dass es einfach nicht so funktioniert. Man lernt nie aus.
Dann weiß ich jetzt zumindest, dass ich zwar nicht mein gewünschtes Ergebnis bekommen werde, weiß aber auch, dass ich nicht "zu blöd" war, die gewünschte Lösung zu finden, sondern dass es einfach nicht so funktioniert. Man lernt nie aus.
- DeaD_EyE
- User
- Beiträge: 1240
- Registriert: Sonntag 19. September 2010, 13:45
- Wohnort: Hagen
- Kontaktdaten:
Du könntest ja einen Weg mit Python finden, sofern das System irgendwelche APIs zur Verfügung stellt.
Da ich das nicht kenne, kann ich auch nicht viel zu sagen.
Frag den Support einfach, ob man Python einsetzten kann und ob irgendwelche Schnittstellen verfügbar sind.
Da ich das nicht kenne, kann ich auch nicht viel zu sagen.
Frag den Support einfach, ob man Python einsetzten kann und ob irgendwelche Schnittstellen verfügbar sind.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server