Webseiten-Werkzeuge

Benutzer-Werkzeuge


Reguläre Ausdrücke

Eines der Haupteinsatzgebiete von print2forms ist die Bearbeitung von bereits existierenden Datenströmen aus Applikationen, die nicht geändert werden sollen oder aber nicht mehr geändert werden können. Um diesen Anforderungen gerecht zu werden, muß print2forms über einen leistungsfähigen Mechanismus zur Erkennung der Druckdaten verfügen, mit dem es sich den jeweiligen Vorgaben anpaßt. Diese Aufgabe, einzelne Elemente innerhalb der Druckdaten zu erkennen, wird durch die sogenannten regulären Ausdrücke erledigt.

Reguläre Ausdrücke sind keine Erfindung für print2forms, sondern sind integraler Bestandteil der meisten modernen Skript- und Programmiersprachen. Die regulären Ausdrücke dienen letztendlich der Suche nach bestimmten Zeichenfolgen innerhalb einer anderen Folge von Zeichen - in unserem Fall innerhalb des Druckdatenstroms.


Einige typische Anwendungsgebiete für reguläre Ausdrücke innerhalb von print2forms sind:

  • Auffinden der Rechnungsnummer, um sie optisch hervorzuheben.
  • Auffinden von Länderkennzeichen, um die verschiedensprachigen Versionen eines Formulars auszuwählen.
  • Auffinden der Kundennummer, um sie als Barcode zu drucken.
  • Auffinden einer Teilenummer, um eine technische Zeichnung als Anlage zu drucken.
  • Auffinden von Kontrolldaten, zum automatischen Einbinden von Werbeeindrucken oder Anlagen.
  • Auffinden von Daten, um vorgegebene Formulare auszufüllen.
  • Auffinden von Artikeldaten, um in einer Tabelle variabel hohe Reihen abzutrennen.
  • Auffinden von Adressdaten, um beim Faxen ein entsprechendes Deckblatt zu erzeugen.
  • Auffinden des Sachbearbeiternamens, um eine elektronische Unterschrift einzublenden.
  • Auffinden von Versandangaben, um automatisch einen Retourenaufkleber zu erzeugen.
  • Auffinden von Artikeldaten, um in einer Tabelle Spalten auszutauschen.
  • Auffinden der Kundennummer, um aus einer Datenbank die EMail-Adresse abzufragen.
  • Auffinden von Schlagworten, um beim Archivieren das Dokument automatisch zu indizieren.
  • und, und, und …


Der reguläre Ausdruck beschreibt ein Muster, gegen das die empfangenen Druckdaten getestet werden. Sobald das Muster erkannt wurde, wird die dem regulären Ausdruck zugeordnete Aktion, zum Beispiel der Ausdruck eines Barcodes oder der Druck eines bestimmten Formulars, ausgelöst.

Mit Hilfe der regulären Ausdrücke kann geprüft werden, ob an einer bestimmten Stelle im Druckdatenstrom ein bestimmtes Muster (Wort) vorkommt, oder ob und wie oft dieses Muster irgendwo in einer Zeile oder sogar irgendwo innerhalb der gesamten Seite vorkommt.

Die zweite wichtige Aufgabe der regulären Ausdrücke ist, neben dem Auffinden vorgegebener Muster, das Entnehmen von Druckdaten zum Zwecke der späteren Weiterverwendung. Solch ein Anwendungsfall ist beispielsweise beim Einfügen von Barcodes gegeben, deren konkreter Inhalt aus den Druckdaten entnommen werden muß.


Um das Thema Reguläre Ausdrücke nicht gleich theoretisch anzugehen, werden im folgenden ein paar kleine, einfache Beispiele für konkrete reguläre Ausdrücke gezeigt und beschrieben. Damit sollte die hinter den regulären Ausdrücken stehende Idee der Mustererkennung relativ leicht fassbar werden.

Regulärer AusdruckBeschreibung
RechnungDer Ausdruck erkennt das Wort 'Rechnung', wenn es alleine in einer Zeile oder in einem Textfragment steht.
.*RechnungDer Ausdruck erkennt das Wort 'Rechnung', wenn es am Ende einer Zeile oder eines Textfragments steht. Der Teilausdruck '.*' bedeutet, es kann ein beliebiges Zeichen beliebig oft wiederholt werden. Der Ausdruck erkennt also auch ' Rechnung', 'Abschluß-Rechnung' und natürlich auch wieder 'Rechnung'.
.*Rechnung.*Wieder erkennt der Ausdruck das Wort 'Rechnung' innerhalb einer Zeile oder eines Textfragments. Der Unterschied zu den vorherigen Beispielen, ist der, daß das Wort jetzt irgendwo innerhalb der Zeichenkette erkannt wird. Also auch in '3. Rechnung vom 17.10.2008' oder ' Rechnung '. Der Ausdruck erkennt übrigens nur das letzte Vorkommen des Worts!
.* ###,## €Der Ausdruck erkennt einen dreistelligen Geldbetrag in Euro am Ende einer Zeile oder eines Textfragments. Dabei steht das '#'-Zeichen für eine beliebige Dezimalziffer. Der Ausdruck verlangt dabei immer einen dreistelligen Betrag vor dem Komma.
.* #+,## €Der Ausdruck erkennt diesmal einen beliebig großen Geldbetrag, weil das Pluszeichen hinter der ersten Ziffer eine einmalige oder beliebig häufige Wiederholung erlaubt. Der Ausdruck erkennt ' 0,00 €' genauso wie ' 1234,56 €'. Er erkennt aber natürlich nicht ' 1.234,56 €' (ein Ausdruck dafür ist natürlich auch formulierbar).
.{10}Rechnung.*Dieser Ausdruck benutzt in den geschweiften Klammern einen Wiederholungsfaktor, der besagt, daß vor dem Wort 'Rechnung' genau zehn beliebige Zeichen stehen müssen. Was hinter dem Wort 'Rechnung' steht, ist beliebig. Dies ist im Prinzip nichts weiter als die Aussage, das Wort 'Rechnung' beginnt an der elften Stelle.
Frau|Herr|FirmaDer Ausdruck prüft, ob auf einer Zeile oder in einem Textfragment eines der Worte 'Frau', 'Herr' oder 'Firma' steht. Vor oder hinter einem der Worte darf nichts weiter stehen.
.*(Frau|Herr|Firma).*Reguläre Ausdrücke haben eine gewisse Ähnlichkeit zu mathematischen Formeln. Dort gibt es zum Beispiel Vorangregeln wie 'Punkt vor Strich', die das Zusammenwirken von Operatoren regeln. Falls man andere Reihenfolgen wünscht, muß man Klammern setzen. Das ist hier genauso. Jetzt kann eines der Worte irgendwo innerhalb der Zeile oder des Textfragments auftreten. Ohne die Klammern dürfte vor 'Frau' etwas stehen, 'Herr' müßte alleine stehen und auf 'Firma' dürfte etwas folgen.

Diese einfachen Beispiele sollten erst einmal genügen, um einen ersten Eindruck davon zu bekommen, um was es bei Regulären Ausdrücken und dem Thema Mustererkennung geht.

Hinweise

  • Für reguläre Ausdrücke gibt es leider keine allgemeingültige Spezifikation. Jede Skript- (Perl, PHP, Phyton) oder Programmiersprache (Java, .NET, C#) benutzt ihren eigenen Dialekt, der auf die besonderen Gegebenheiten der jeweiligen Umgebung abgestimmt ist. Wer aber reguläre Ausdrücke von einer dieser Sprachen her kennt, findet sich in print2forms schnell zurecht.
  • print2forms orientiert sich an den regulären Ausdrücken von Perl, benutzt aber ebenfalls einen etwas abweichenden Dialekt. Eine ausführliche Beschreibung der regulären Ausdrücke findet sich in diesem Wiki unter Reguläre Ausdrücke.
print2forms/einfuehrung/regulaere_ausdruecke.txt · Zuletzt geändert: 2019-01-03 15:44 (Externe Bearbeitung)