Syntax und Beispiele für reguläre Ausdrücke

Syntax

Mit Hilfe regulärer Ausdrücke unterstützen die Programme der FlexSpooler ProgramSuite die gezielte Zerlegung eines Eingabedateinamens nach Mustern in einzelne Fragmente, um diese zum Aufbau eines Zieldateinamens mit zu verwenden.

Ein regulärer Ausdruck wird aus den Zeichen des zugrunde liegenden Alphabets in Kombination mit so genannten Metazeichen ([, ], (, ), {, }, |, ?, +, *, ^, $, \, .) gebildet. Alle übrigen Zeichen des Alphabets stehen für sich selbst.

Metazeichen Beschreibung
. Ein Punkt steht für ein beliebiges Zeichen.
Ein Zeichen aus einer Auswahl
[ ] Ein eckiges Klammern Paar dient zur Zeichen- oder Zeichenklassenauswahl.
[egh] steht für eines der Zeichen „e“, „g“ oder „h“.
[0-6] steht für eine Ziffer von „0“ bis „6“ (Bindestriche sind Indikator für einen Bereich).
[A-Za-z0-9] steht für ein einen beliebigen lateinischer Buchstabe oder eine beliebige Ziffer.
[^a] steht für ein ein beliebiges Zeichen außer „a“ („^“ am Anfang einer Zeichenklasse negiert selbige).
Alternativen
|
Man kann alternative Ausdrücke mit dem "|"-Symbol zulassen:
"(ABC|abc)" bedeutet "ABC" oder "abc", aber z. B. nicht "Abc".
Vordefinierte Zeichenklassen
\d Eine Ziffer - entspricht [0-9]
\D Keine Ziffer - entspricht [^0-9]
\w Ein Buchstabe, eine Ziffer oder der Unterstrich - entspricht [a-zA-Z_0-9]
\W Kein Buchstabe, keine Zahl und kein Unterstrich - entspricht [^\w]
\s Ein Freizeichen (Whitespace) - entspricht [ \f\n\r\t\v]
\S Alle Zeichen außer Freizeichen - entspricht [^\s]
\b Mit \b vor einer Zeichenkette wird die Zeichenkette nur gefunden, wenn ein Wort damit anfängt.
Mit \b nach einer Zeichenkette wird die Zeichenkette nur gefunden, wenn ein Wort damit endet.
\B Mit \B vor einer Zeichenkette wird die Zeichenkette nur gefunden, wenn ein Wort nicht damit anfängt. Mit \B nach einer Zeichenkette wird die Zeichenkette nur gefunden, wenn ein Wort nicht damit endet.
Angabe der Anzahl Wiederholungen (Quantoren)
Wiederholungsfaktorzeichen erlauben es, den vorherigen Ausdruck in verschiedener Vielfache in der Zeichenkette zuzulassen.
? Der voranstehende Ausdruck ist optional, er kann einmal vorkommen, muss es aber nicht, d. h. der Ausdruck kommt null- oder einmal vor.
+ Der voranstehende Ausdruck muss mindestens einmal vorkommen, darf aber auch mehrfach vorkommen.
* Der voranstehende Ausdruck darf beliebig oft (auch keinmal!) vorkommen.
{n} Der voranstehende Ausdruck muss exakt n-mal vorkommen.
{min,} Der voranstehende Ausdruck muss mindestens min-mal vorkommen.
{,max} Der voranstehende Ausdruck darf maximal max-mal vorkommen.
{min,max} Der voranstehende Ausdruck muss mindestens min-mal und darf maximal max-mal vorkommen.
Positionsdefinition für einen Ausdruck
^ Definiert nachfolgenden Ausdruck exakt zu Beginn der Zeichenkette
$ Definiert voranstehenden Ausdruck exakt zum Ende der Zeichenkette
Gruppierung mit runden Klammern
() Auf mit runden Klammern gekapselte Ausdrücke kann von links nach rechts mit $1, $2, $3 zugegriffen werden. Mit dieser Hilfe ist es möglich, aus einer Zeichenkette ein Muster gezielt zu adressieren.
Weitere Metazeichen
\ Erlaubt nachfolgend die Verwendung eines Metazeichens als normales Zeichen.
Z. B. \. erlaubt die Suche nach dem Dezimalpunkt, \\ die Suche nach dem Backslash.

Gieriges Verhalten: Normalerweise wird von einem regulären Ausdruck die größtmögliche passende Zeichenkette ausgewählt, weshalb dieses Verhalten als "gierig" bezeichnet wird. Da dieses Verhalten jedoch nicht immer so gewollt ist, lassen sich Quantoren als "genügsam" deklarieren. Hierfür wird dem Quantor ein Fragezeichen ? nachgestellt.

Beispiel: Angenommen es wird auf den String "ABCDEB" der reguläre Ausdruck "A.*B" angewendet, so würde der komplette String "ABCDEB" gefunden werden. Mit Hilfe des "genügsam"-Quantor "?" passt der neue Ausdruck, also "A.*?B", nur auf die Zeichenkette "AB", bricht also die Suche nach dem ersten gefundenen "B" ab.

Beispiele

  • Szenario 1: Der Eingabedateiname einer Solid Edge Zeichnungsdatei soll in Dateiname und Erweiterung zerlegt werden (=Default-Einstellung):
    IFNPATTERN=(^.+)(\.dft$)
    Das erste Klammern Paar ($1) erhält hiermit den reinen Dateinamen, das zweite Klammern Paar ($2) die Dateierweiterung inklusive dem Dezimalpunkt. Im Ausgabedateinamenspattern kann nun z. B. über OP1=IFNPATTERN,$1 gezielt auf den reinen Dateinamen zugegriffen werden.
  • Szenario 2: Der Eingabedateiname einer Solid Edge Zeichnungsdatei bestehe immer aus alphanumerischem Text, einem Unterstrich, einer genau 2-stelligen Zahl, gefolgt von der Dateierweiterung ".dft" (z. B. ab1-2_cde_03.dft). In der Ausgabedatei soll der Eingabedateiname ohne den Unterstrich, der exakt 2-stelligen Zahl und der Dateierweiterung ".dft" verwendet werden (also gemäß dem Beispiel "ab1-2_cde"):
    IFNPATTERN=(^.+)(_\d{2}\.dft$)
    Auch hier enthält das erste Klammerpaar ($1) die gewünschte Zeichenkette zur Verwendung im Ausgabedateinamen.
  • Szenario 3: Der Eingabedateiname einer Solid Edge Datei bestehe immer aus 3 Teilen, die jeweils durch Unterstriche voneinander separiert sind. Der zweite Teil bestehe wiederum immer aus einem Buchstaben, gefolgt von 2 oder 3 Ziffern (z. B. abc-def_g12_hij.psm). Für die Bildung des Ausgabedateinamens sollen nur der erste Teil und vom zweiten Teil nur die Zahl verwendet werden (also gemäß dem Beispiel "abc-def" und "12"):
    IFNPATTERN=(^.+)_\D(\d{2,3})_.+\.\w{3}$
    Das erste Klammern Paar ($1) enthält die gewünschte erste Teilzeichenkette, das zweite Klammern Paar ($2) die 2 bis 3-stellige Zahl. Über z. B. OP1=IFNPATTERN,$1 und OP2=IFNPATTERN,$2 kann gezielt für den Ausgabedateinamen auf die Eingabedateinamensbestandteile zugegriffen werden.