String in Variablen schreiben und in Textbaustein ausgeben  GELÖST

Anwenderaustausch zur PhraseExpress Makroprogrammierung
Post Reply
m-s
Posts: 19
Joined: 31 Jan 11, 12:47

String in Variablen schreiben und in Textbaustein ausgeben

Post by m-s » 07 May 20, 10:45

Hallo Zusammen,

ich hoffe jemand kann mir den Einstieg in die Funktionen etwas erleichtern.
Ich habe von einem Anti-Virus Programm Meldungen, die schlecht zu lesen sind und würde die gerne jeweils in eine Verständliche Mail umwandeln und an den betreffenden Benutzer schicken.

Die Meldung ist immer gleich aufgebaut, kann aber zum Ende hin unterschiedlich sein.
C:\Users\USER\AppData\Local\Microsoft\Outlook\tolle@adresse.de.ost\[Time: 2018/11/20 14:33:53][Subject: DHL Express shipment request AWB Number: 5831143907][From: Dhl Customer Support]=>DHL VERIFICATION FORM AWB Number 5831143607.doc\(objdata)\(Embedded DocFile g)
Gemeldet wird die:
  • betroffene OST (Outlook) Datei
  • Datum und Zeit
  • Betreff
  • Absender
  • Anhang (teilweise mit Inhaltsangabe)
Meine Frage nun, wie kann ich die Meldung zerlegen und in einzelne Variablen schreiben, um die dann in einem Textbaustein verwenden zu können?

m-s

low
Posts: 44
Joined: 21 Jul 15, 07:37

Post by low » 08 May 20, 12:51

Moin m-s,

ich habe im Moment leider keine Zeit es auszuarbeiten, aber der schnellste Weg dürfte RegEx lookahead und lookbehind in Verbindung mit dem Makro "Teiltext mit RegEx extrahieren" sein.

Gruß

low

P.S.: https://www.regular-expressions.info/lookaround.html

low
Posts: 44
Joined: 21 Jul 15, 07:37

Post by low » 08 May 20, 16:04

So,

jetzt hatte ich doch etwas Zeit. ;-)

Das hier ist eher eine quick-and-dirty Lösung. Sie funktioniert aber (solange Deine Daten immer nach demselben Schema aufgebaut sind):

Code: Select all

{#set -name var_name -content {#regexget -text {#insertclipboard -variablename Zwischenablage einfügen} -expr .*(?=\[Time) -variablename Teiltext mit RegEx extrahieren} -variablename Variableninhalt definieren}{#set -name var_time -content {#regexget -text {#insertclipboard -variablename Zwischenablage einfügen} -expr (?<=Time: )\d*.\d*.\d*.\d*.\d*.\d* -variablename Teiltext mit RegEx extrahieren} -variablename Variableninhalt definieren}{#set -name var_subject -content {#regexget -text {#insertclipboard -variablename Zwischenablage einfügen} -expr (?<=Subject: ).*(?=\]\[From:) -variablename Teiltext mit RegEx extrahieren} -variablename Variableninhalt definieren}{#set -name var_from -content {#regexget -text {#insertclipboard -variablename Zwischenablage einfügen} -expr (?<=From: ).*(?=\]) -variablename Teiltext mit RegEx extrahieren} -variablename Variableninhalt definieren}{#set -name var_attachement -content  -variablename Variableninhalt definieren}
Du musst Deinen String zuerst in die Zwischenablage bringen und dann das Makro auslösen.
Anschließend stehen in den Variablen:

var_attachement
var_from
var_name
var_subject
var_time

die jeweiligen Werte zur Weiterverarbeitung bereit.

m-s
Posts: 19
Joined: 31 Jan 11, 12:47

Post by m-s » 11 May 20, 19:06

@low
Vielen Dank für Deine Hilfe.

Beim var_attachement fehlte bei mir ein bisschen der Inhalt und ich hatte auch etwas Schwierigkeiten die richtige Stelle zu finden.
Aber nachdem ich dann irgendwann gefunden hatte, dass man mit einem \ jedes Steuerzeichen als Text definieren kann, konnte ich auch nach => suchen und alles in die entsprechende Variable schreiben.

So sieht das jetzt aus:
(?<=\]\=\>).*

low
Posts: 44
Joined: 21 Jul 15, 07:37

Post by low » 12 May 20, 11:16

Hi m-s,

gerne geschehen.
Beim attachement war ich mir auch tatsächlich nicht so ganz sicher, ob ich alles erwischt habe was du brauchst.
;-)

Ich kann immer wieder nur https://regex101.com/ empfehlen.
Hier kann man solche RegEx-Ausdrücke bestens an eigenen Beispielen durchprobieren. Und außerdem gibt es eine gute Erklärung zu allen Token.

Unten den zu verarbeitenden Text rein, oben das RegEx rein und schon kann man sich peut a peut an die Lösung herantasten.

Gruß

m-s
Posts: 19
Joined: 31 Jan 11, 12:47

Post by m-s » 13 May 20, 18:32

@low

habe ich mir mal abgespeichert die Info.
Ist leider in der falschen Sprache, aber ansonsten klasse Seite . . .

Post Reply