**Eigenschaft:** ==== Vergleichsmuster ==== \\ **Beschreibung:** Mit diesem Muster wird festgelegt, gegen welchen Wert der unter **Index** referenzierte Wert auf Gleichheit oder Ungleichheit getestet werden soll. Die maximale Länge des Vergleichsmusters ist auf 255 Zeichen beschränkt. {{print2forms:objekte:formular:opsval.png}} Bei der Eingabe des Vergleichsmusters sind alle Klein- und Grossbuchstbaben, länderspezifischen Sonderzeichen (Unicode), Ziffern und alle Sonderzeichen (ausser den weiter unten aufgeführten Metazeichen) erlaubt. Insbesondere ist die Verwendung von Leerstellen zulässig. Steuerzeichen wie Tabulator, Zeilen- oder Seitenvorschub können zwar hexadezimal eingegeben werden, sind aber nicht nutzbar, weil nur die Textbestandteile des Dokuments durchsucht werden. Vorsicht ist bei der Verwendung länderspezifischer Sonderzeichen angebracht. Hier spielt eine entscheidende Rolle, in welchem Zeichensatz diese Sonderzeichen auf dem Drucker kodiert sind. Wenn dies nicht ebenfalls der Zeichensatz Unicode ist, müssen die Sonderzeichen im (p2f)-System gegebenenfalls hexadezimal kodiert werden. Bei der Eingabe des Vergleichsmusters können komplexe Suchmuster verwendet werden. Zur Beschreibung von Mustern werden sogenannte Reguläre Ausdrücke verwendet, die mit den folgenden, sogenannten Metazeichen beschrieben werden: | . | Der Punkt repräsentiert ein beliebiges Zeichen - natürlich auch sich selbst und jedes der anderen Metazeichen. Dieses Teilmuster ist also unabhängig vom zu testenden Zeichen immer erfüllt. | | # | Das Hash-Symbol repräsentiert eine Dezimalziffer, also die Zeichen '0' bis '9'. Es ist somit eine Abkürzung für %%'[%%0-9]' (siehe weiter unten). Das Symbol kann auch innerhalb der Definition von Zeichenklassen verwendet werden. | | @ | Das @-Symbol repräsentiert einen beliebigen Gross- oder Kleinbuchstaben des lateinischen Alphabets, also die Zeichen 'A' bis 'Z' oder 'a' bis 'z'. Es ist somit eine Abkürzung für %%'[%%a-zA-Z]' (siehe weiter unten). Das Symbol kann auch innerhalb der Definition von Zeichenklassen verwendet werden. | | [ ] | Innerhalb der eckigen Klammern können die an einer bestimmten Stelle zulässigen Zeichen einzeln aufgeführt werden. Damit wird eine sogenannte Zeichenklasse definiert. Dabei sind Aufzählung wie etwa %%'[%%AEIOU]' aber auch Bereiche wie %%'[%%0-9]' möglich. Mischformen wie %%'[%%0-9ABCDEF]' oder [0-9a-fA-F]' sind ebenfalls erlaubt. Die Reihenfolge von Bereichen innerhalb der Klasse ist ohne Bedeutung, wohl aber die Reihenfolge der Zeichen bei der Definition von Bereichen. Das erste Zeichen muss einen kleineren Code haben als der des Endzeichens (in ISO 8859-1). Ist ein Minuszeichen Bestandteil der Zeichenklasse, muss es als erstes aufgeführt oder in seiner literalen Form '\-' geschrieben werden. Eine öffnende oder schliessende eckige Klammer innerhalb der Zeichenklasse muss immer als '\%%['%% oder '\]' geschrieben werden. | | %%|%% | Der senkrechte Strich kennzeichnet eine Alternative. Wird das links vom senkrechten Strich stehende Muster nicht erkannt, wird das Muster rechts vom senkrechten Strich getestet. Wird keines der Teilmuster erkannt, gilt das gesamte Muster als nicht erkannt. | | \ | Der inverse Schrägstrich kennzeichnet das nachfolgende Zeichen als Literal. Damit können alle zur Formulierung der Muster notwendigen Metazeichen %%('*'%% = '\%%*'%%, '?' = '\?', etc) auch in den Nutzdaten abgetestet werden. Folgt dem Schrägstrich ein 'x', werden die beiden nachfolgenden Zeichen als Hexadezimalwerte interpretiert. Damit ist mit '\x00' bis '\xFF' der gesamte Zeichenbereich inklusive Steuerzeichen abdeckbar. | | * | Der Stern repräsentiert einen Wiederholungsfaktor. Er erlaubt die beliebig häufige Wiederholung des vorangegangenen Musters - insbesondere aber auch, dass das Muster Null mal wiederholt wird, also gar nicht vorkommt. | | + | Das Pluszeichen repräsentiert einen Wiederholungsfaktor. Es erlaubt die beliebig häufige Wiederholung des vorangegangenen Musters, wobei das Muster aber mindestens einmal vorkommen muss. | | ? | Das Fragezeichen repräsentiert einen Wiederholungsfaktor. Es erlaubt die nullmalige oder einmalige Wiederholung des vorangegangenen Musters. Es ist somit eine Abkürzung für den Wiederholungsfaktor %%'{%%0,1}' (siehe weiter unten). | | { } | Innerhalb der geschweiften Klammern kann ein numerischer Wiederholungsfaktor angegeben werden. Die Form '#{5}' fordert das exakt fünfmalige Auftauchen einer Ziffer und entspricht daher dem Muster '#####'. Ein Wiederholungsfaktor bezieht sich immer nur auf das vorangehende Zeichen, die Zeichenklasse oder Gruppe. Alternativ kann ein Wiederholungsfaktor auch in der Form '#{2,9}' angegeben werden, was für eine Dezimalzahl mit mindestens zwei und maximal neun Stellen steht. | | ( ) | Innerhalb der runden Klammern können beliebige andere Muster zu einer Gruppe zusammengefügt werden. Auf diese Gruppe kann ein Wiederholungsfaktor angewendet werden. Die Zeichen aus dem Nutzdatenstrom, die durch den Inhalt der Gruppe erkannt werden, werden in einem Textpuffer zur weiteren Nutzung innerhalb von Schablonen zur Verfügung gestellt. Insgesamt können nur zehn Gruppen innerhalb eines Musters verwendet werden. Gruppen können ineinander geschachtelt werden. | \\ **Hinweise:** * Die Verwendung von Vergleichsmustern hat keinen grösseren Einfluss auf die Laufzeit der Prozesse. * Frühere Versionen von (p2f) haben für die Mustererkennung andere Muster verwendet. Diese werden von den aktuellen Versionen der Clients und Gateways auch immer noch unterstützt, und können auch weiterhin verwendet werden. Soll aber die oben beschriebene, leistungsfähigere Art der Mustererkennung in alten Installationen parallel dazu verwendet werden, sind die neuen Muster mit einem vorangestellten '^' zu kennzeichnen. In neueren Installationen ab der Installer Version 2.5 werden ausschliesslich die neuen Muster verwendet. * Eine ausführliche Abhandlung und viele Beispiele zum Einsatz von Vergleichswerten und Mustern findet sich im (p2f) Handbuch über **Reguläre Ausdrücke** und hier im Wiki unter [[print2forms:regex:regex|Reguläre Ausdrücke]]. * Als schnelle Übersicht und Gedächtnisstütze kann hier das vollständige Syntaxdiagramm für reguläre Ausdrücke abgerufen werden: [[print2forms:regex:Komplettes Syntaxdiagramm]]. \\