Tipp: Textbedingungen mit Regulären Ausdrücken prüfen

  • Hallo zusammen,


    immer wieder werde ich gefragt ob und wie man bestimmte Text-Bedingungen im Regeleditor bewerkstelligen kann. Auch das Vereinfachen einer angewachsenen Expertenregel kann bei einer Vielzahl von Bedingungen helfen, denn ansonsten leidet die Übersicht und das Navigieren innerhalb des Regeleditors wird mühselig.


    Tipp: Verwendet Reguläre Ausdrücke um mehrere Bedingungen in einem Regelknoten zu formulieren und macht euch zusätzliche Zeichenklassen zunutze um flexibler bei der Gestaltung eurer Suchbegriffe zu sein.


    Beispiele:


    (1.) Wenn das Wort "Rechnung" oder "Lieferschein" im Text vorkommt, dann...

    Das Pipe-Symbol "|" ist dabei gleichbedeutend mit "oder". Damit lassen sich beliebig viele Begriffe miteinander verknüpfen, ohne dass man für jeden Begriff einen neuen Regelknoten erstellen muss.


    (2.) Wenn das Wort "Artikel" und dann ein sich ändernder Artikelname und dann das Wort "bestellen" vorkommt, dann...

    Der Punkt "." gefolgt von dem Sternchen "*" bedeutet, dass zwischen dem Wort "Artikel" und "bestellen" beliebige Zeichen in beliebiger Anzahl stehen dürfen. Das bedeutet, dass die Bedingung beispielsweise bei dem Satz "...können Sie den Artikel TEFAL-Toaster bestellen." erfüllt wäre.


    (3.) Wenn das Wort "Rechnung" vorkommt, aber nicht das Wort "Rechnungsnummer", dann...

    Die Zeichenklasse "\W" steht für ein Zeichen, das weder Buchstabe noch Zahl noch Unterstrich ist. Dazu zählt ein Leerzeichen oder auch ein Punkt. Da bei dem Wort "Rechnungsnummer" das erste Zeichen nach dem "Rechnung" ein "s" ist, ist die Bedingung in diesem Fall nicht erfüllt.


    Sehr praktisch ist eine Regex auch dann wenn man HTML-E-Mails auf Textvorkommen prüfen möchte. Wurde bei der Erstellung der E-Mail beispielsweise eine HTML-Tabelle zur Formatierung verwendet, dann wird es unter Umständen schwierig nach dem gewünschten Test zu suchen:

    Dieses Beispiel zeigt einen solchen Fall. Hier kann nicht nach "Zahlungsweise Vorkasse" gesucht werden, weil es sich letztendlich nicht um ein Leerzeichen zwischen den beiden gesuchten Wörtern handelt, auch wenn es so aussehen mag.
    Eine in einem solchen Fall oft funktionierende Regex-Bedingung lautet "Zahlungsweise\sVorkasse". Das "\s" steht dabei für ein Leerzeichen, oder ein Tabulator, oder ein Zeilenumbruch und noch einige mehr.


    Das sind nur einige Beispiele die euch Anregungen geben sollen in euren Textbedingungen Regexen zu verwenden :-)


    Einen ersten, einigermaßen verständlichen Einblick in die Verwendung von Regulären Ausdrücken gibt es bei Wikipedia: http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck


    Wer sich intensiver mit dem Erstellen von Regulären Ausdrücken beschäftigen möchte dem sei eines der zahlreichen Programme zum einfacheren Erstellen nahegelegt. Diese Programme erlauben es Regexen in Echtzeit zu prüfen und auf zahlreiche Textvorlagen anzuwenden. Ich persönlich favorisiere den RegexBuddy.


    Lieben Gruß

  • Hallo,


    danke für die Tipps. Noch ein paar Anmerkungen:


    - Wenn die Groß- und Kleinschreibung keine Rolle spielt bei der Überprüfung, kann man vor den regulären Ausdruck noch ein so genannter "Modifier" vorran gestellt werden:


    (?i)Rechnung|Lieferschein


    findet dabei beispielsweise auch "rechnung", "RECHNUNG", etc. Es gibt noch weitere "Modifier", welche das Verhalten etwas beeinflussen. Dieser ist aber warscheinlich in diesem Zusammenhang am sinnvollsten.


    - Einen besseren Einstieg für reguläre Ausdrücke im Zusammenhang mit GREYHOUND findet man in der Skriptsprachendokumentation im Abschnitt reguläre Ausdrücke. Diese beschreibt alle Möglichkeiten von GREYHOUND und fängt vorallem nicht mit so unnötig komplizierten Formeln an. ;)