Mit Regex Informationen auslesen


schmidt_as

Grünschnabel
Guten Morgen zusammen,

wie der ein oder andere hier im Forum "kämpfe" ich ebenfalls mit den REGex-Befehlen und mit EcoDMS etwas besser arbeiten zu können.
Ich habe folgende Information:

Empfänger Max Mustermann
99999 Musterstadt * Musterstraße 5
Lieferavis max.muster@mustermail.com

In Wirklichkeit hab ich natürlich keine Tabelle.
Was bei mir in Spalte B steht, ist in Wirklichkeit mit Tabulatoren von "Empfänger" und "Lieferavis" getrennt.
Ich hatte es versucht mit Leerzeichen darzustellen, die werden aber beim Speichern des Beitrags gelöscht


Ich hätte nun gerne lediglich die Information die "rechts" von Empfänger steht -> Mas Mustermann, ausgegeben.
Leider komme ich überhaupt nicht klar.

Ich würde mich wirklich sehr über Eure Hilfe freuen.
Schon jetzt vielen Dank für Eure Mühe!
Viele Grüße
Alexander
 

zerix

Hausmeister
Moderator
Hallo,

da der Regex eigentlich sehr simple ist, falls ich das Problem richtig verstanden habe, ich es aber nicht mag, sofort die Lösung zu posten, wollte ich mal fragen, was du denn bisher hast.

Viele Grüße
Sascha
 

Yaslaw

n/a
Moderator
Das hilft nicht weiter. Du solltest einen Text zur Verfügung stellen, mit dem man ein Beispiel basteln kann.

Anhand deiner Angaben habe ich mal einen schnellen Entwurf gemacht. Ich bin mir aber sicher, dass es nicht das ist, was du suchst: Mein Test für dich bei regex101
 

schmidt_as

Grünschnabel
Hallo Yaslaw,

dein Code funktioniert schon sehr gut.
Allerdings gibt er den kompletten Text wieder.
Ich benötige jedoch nur Max Mustermann
Lässt sich das noch etwas genauer eingrenzen und evtl. sogar auf die Zeile in der Empfänger steht?
 

Yaslaw

n/a
Moderator
Wahrscheinlich schon. Dazu müsste ich dein Text aber als Originaltext haben und nicht eine Interpretation meinerseits. Bei RegEx ist es halt ein Unterschied, ob man ein Leerzeichen oder 2 oder ein Tabulator etc. hat.
 

schmidt_as

Grünschnabel
Wenn ich das richtig verstehe, sprichst du von Regex innerhalb von EcoDMS.
Vielleicht hilft das:
Dein Tipp ist gar nicht schlecht. ;)
Die Seite hab ich ehrlicherweise noch nicht gefunden gehabt.
Zu meiner Entschuldigung muss ich aber anmerken, dass mein Problem selbst durch den Support von ecoDMS nicht gelöst werden konnte. Scheinbar kennen auch die Jungs dort, die Seite nicht so wirklich.

Jedenfalls funktioniert der Code:
Code:
:(?i)(?<=Empfänger)([\s]*)\b([\S]*)\b
schon mal sehr gut.
Nur hört er nach Max auf und erkennt nicht den Nachnamen.

Wie bekommt man den Code so hin, dass er nach dem Leerzeichen nach dem Vornamen noch einen weiteren Ausdruck findet und erst nach diesem Leerzeichen stoppt?

Schon jetzt vielen Dank für eure Hilfe
 

Yaslaw

n/a
Moderator
Wenn du noch den Tabulator und das Leerzeichen dazu nimmts, dann findet er bis ans Ende der Zeile.
Code:
:(?i)(?<=Empfänger)([\s]*)\b([\S\t ]*)\b
 

zerix

Hausmeister
Moderator
Hallo,

Wenn du noch den Tabulator und das Leerzeichen dazu nimmts, dann findet er bis ans Ende der Zeile.
Code:
:(?i)(?<=Empfänger)([\s]*)\b([\S\t ]*)\b
Der Tabulator wird durch das \s gecatcht. Da sollte man auch keine eckigen Klammern benötigen.
Code:
:(?i)(?<=Empfänger)(\s*)\b([\S ]*)\b
Viele Grüße
Sascha
 

Yaslaw

n/a
Moderator
Mit \s wird aber auch der Zeilenumbruch genommen.
Ach hätte man doch nur gute Testdaten, dann müsste man weniger Ratespiele spielen
 

schmidt_as

Grünschnabel
Hallo Yaslaw,
leider funktioniert weder dein Code noch der von Zerix.
Da Ihr euch alle aber so viel Mühe macht, hab ich mir nun zeigen lassen, wie das Programm eine Datei einliest und bin dadurch nun an den Code gekommen.
Ich denke und hoffe, dass es damit deutlich einfacher wird und das fischen im drüben aufhört.

Code:
Ladeliste: speditions
logistics
GmbH
-
D-9999 Speditionsstadt
Seite 1
Kunde:
Chrsitkind SE (#41155~42784)
16.10.2019 11:20
Sendungs-Nr: 0002011147
Auftrags-Nr: 11161
Frankatur: frei Haus
Depot: 007
Auftraggeber Christkind-
*
(#41155~42784)
9999 Wunderstandt
*
Wunderstraße 001
Empfänger Max Muster
99992 Musterstadt
*
Musterstraße
1
Lieferavis
mustermannmax@gmx.de
Ladezeit
17.10.19
Termin
B2CLine
Hinweis-Schl: nur mit Hebebühne zustellen
Avis Festnetz: 0177007007007 / 000 32586914
S-Zeilen:
1 EE
Saunaaufguss
315
kg 120x080x120 1,152cbm
Calnids
100 340294943036198282
DRAN 000 TTAN
**
1
Sdg., 1 Colli (1 EE), gesamt 315 kg.
 

schmidt_as

Grünschnabel
Muss ich dir Recht geben - bei Regex101 hört er nach "TEST" auf.
Bei ecoDMS liest er alles ein, was mach Empfänger kommt :cautious:

Und mit:
Code:
:(?i)(?<=Empfänger)([\s]*)\b([\S]*)\b
bekomme ich nur Max
 

Yaslaw

n/a
Moderator
Dann prüf mal nicht auf tab & Leerzeichen sondern nur auf Leerzeichen als Trennzeichen. Also nach dem \S noch ein Leerzeichen setzen
Ich kenne ecoDMS leider nicht.
Code:
:(?i)(?<=Empfänger)([\s]*)\b([\S ]*)\b
 

schmidt_as

Grünschnabel
Guten Abend ihr zwei.
Also ecoDMS kommt irgendwie mit dem "Leerzeichen" nach dem "\t" nicht klar und ignoriert dieses.
Ich hab mein Problem nun nochmals an den Support weitergeleitet, in der Hoffnung die wissen wie man dem Programm ein "Leerzeichen" schmackhaft macht.

Ärgerlich ist es schon.
Ich hab eure Ausdrücke in drei verschiedenen Tools getestet. Jedes Mal das gleiche Ergebnis.
Wenn Programmierer schon eine solche Möglichkeit implementieren, dann doch bitte exakt am Standard.
So hat man nur Ärger und kann sich nicht helfen!

Euch ein schönes Wochenende!
 

Neue Beiträge