Reguläre Ausdrücke
Um im Verwendungszweck die Adressnummer oder die Belegnummer zu finden, können "Reguläre Ausdrücke" definiert werden (Schaltfläche: PARAMETER - SONSTIGE – REGULÄRE AUSDRÜCKE).
Folgende Felder können Sie hinterlegen:
Nummer
Die fortlaufende Nummer wird für das Speichern und Zuordnen des Regulären Ausdrucks beim Suchen benötigt. Diese Nummer sollte, falls der Ausdruck gelöscht wird, nicht nochmals vergeben werden!
Bezeichnung
Hier hinterlegen Sie eine Bezeichnung, die kurz die Funktionsweise des Ausdrucks bestimmt. Diese Bezeichnung wird später im Assistenten, in welchem Sie die zu verwendenden 'Regulären Ausdrücke' auswählen, angezeigt.
Ausdruck gilt für Feld
- Adressnummern
- Belegnummern
- Auftragsnummern
Reguläre Ausdrücke zum Suchen und Isolieren
Ausdruck zum Suchen innerhalb des Textes
Hier hinterlegen Sie den Suchausdruck, der zum Auffinden eines Textabschnitts verwendet wird, in dem sich wahrscheinlich die zu suchende Zeichenfolge befindet.
Kennzeichen Ausdruck mehrfach suchen
Erlaubt dem Programm den Ausdruck mehrfach zu suchen. Dies ist z. B. für eine Belegnummernsuche sinnvoll, wenn im Text mehrere Belegnummern vorkommen können.
Ausdruck zum Isolieren des gesuchten Werts innerhalb des über Suchen gefundenen Textes
Aus dem zuvor gefundenen Textabschnitt soll nun eine bestimmte Zeichenfolge bestimmt werden. Hier hinterlegen Sie den Ausdruck zum Extrahieren dieser Zeichenfolge.
Ausdruck zum Erweitern des gefundenen Textes (#T steht als Platzhalter für den gefundenen Ausdruck)
Mit dieser Funktion kann erreicht werden, dass der gefundene Ausdruck um eine Zeichenkette erweitert wird.
Beispiel:
Das Ergebnis soll die Belegnummer RG123456 sein. Die Zeichenkette 123456 wurde gefunden. Im Feld: "Ausdruck zum Erweitern des gefundenen Textes" tragen Sie nun RG#T ein. Dadurch erhalten Sie als Ergebnis: "RG123456".
Soll die Erweiterung nach dem gefundenen Ausdruck ausgewiesen werden, so tragen Sie in dieses Feld zuerst den Platzhalter "#T" ein, und dann die Ergänzung "RG". Das Ergebnis wäre dann 123456RG.
Test
Hier haben Sie die Möglichkeit, Ihre Eingaben zu prüfen.
Testtext zum Prüfen der Ausdrücke
Hier können Sie Zeichenketten hinterlegen, die sehr häufig im Verwendungszweck eingetragen sind. Dadurch können Sie testen, ob der Such-Ausdruck richtig gewählt wurde, und tatsächlich die von Ihnen gewünschte Zeichenkette gefunden wird.
Ergebnis für Suchen-Ausdruck
Es wird angezeigt, welche Einträge aufgrund des "Ausdruckes zum Suchen" gefunden wurden.
Ergebnis für Isolations-Ausdruck
Hier wird angezeigt, wie das ursprüngliche "Such-Ergebnis" aufgrund des Eintrages im Feld: "Ausdruck zum Isolieren des gesuchten Werts ..." gekürzt wird.
Ergebnis nach Erweiterung
In diesem Feld wird das endgültige Ergebnis unter Berücksichtigung des Eintrages im Feld: "Ausdruck zum Erweitern des gefundenen Textes" angezeigt.
Funktionsweise
Als erstes wird im Text mit dem "Ausdruck zum Suchen" gesucht. Wird eine entsprechende Textstelle gefunden, wird der "Ausdruck zum Isolieren" angewendet, um die entsprechende Nummer zu extrahieren.
Falls kein "Ausdruck zum Isolieren" angegeben wurde, wird als Ergebnis die Textstelle des "Ausdruck zum Suchen" zurückgegeben. Falls das Kennzeichen: "Ausdruck mehrfach suchen" gesetzt ist, wird solange der Text weiter durchsucht, bis kein Ergebnis mehr gefunden wird.
Hinweis
Beachten Sie: Die Groß-/Kleinschreibung wird bei Regulären Ausdrücken beachtet!
Escapesequenzen
Escape Zeichen sind notwendig, wenn Sie Zeichen suchen, die normalerweise eine Funktion innerhalb des Ausdruckes haben.
\xnn | Zeichen mit einem Hexadezimalwert (nn) |
\t | ein Tabulator |
\n | Zeilenende |
\r | Wagenrücklauf |
\e | Escape (ESC) |
\x20 | Leerzeichen |
Beispiel:
test\x20Leerzeichen findet 'Test Leerzeichen'
(\x20 steht für ein Leerzeichen)
Zeichenmengen
Mit einer Zeichenmenge kann man nach einzelnen Zeichen in einer Gruppe von Zeichen suchen. Um eine Zeichenmenge zu definieren, setzt man die Zeichen, nach denen gesucht werden soll, in eckige Klammern.
Beispiel: [ab] sucht nach a oder b
Man kann als Zeichenmenge auch einen Bereich definieren.
Beispiele:
[a-z] passt auf jeden Kleinbuchstaben
[A-Z] passt auf jeden Großbuchstaben
[0-9] passt auf jede Ziffer
Zeichenmengen können auch kombiniert werden.
Beispiel:
[a-z5] passt auf jeden Kleinbuchstaben und auf die Ziffer 5
Zeichenmengen können auch negiert werden, indem man unmittelbar nach der ersten Klammer das Zeichen ^ verwendet.
Beispiel:
[^A-Z] findet alles außer Großbuchstaben
Weitere Beispiele:
Büro[PN]T findet "BüroNT", "BüroPT".
Büro[^PN]T findet alles was nicht "BüroNT", "BüroPT" ist.
Vorsicht bei "-", "[" und "]"
Diese Zeichen müssen entweder ein Escape Zeichen bekommen (siehe oben) oder an den Anfang oder das Ende der Menge gestellt werden.
Beispiel:
[-az] findet 'a', 'z' und '-' (am Anfang)
[az-] findet 'a', 'z' und '-' (am Ende)
[a\-z] findet 'a', 'z' und '-' (mit Escape Zeichen "\")
[a-z] findet alle Kleinbuchstaben von "a" bis "z"
[]-a] findet irgendein Zeichen von "]".."a".
vordefinierte Zeichenmengen
\w | ein alphanumerisches Zeichen inklusive "_" |
\W | kein alphanumerisches Zeichen, auch kein "_" |
\d | ein numerisches Zeichen |
\D | kein numerisches Zeichen |
\s | irgendein wörtertrennendes Zeichen (entspricht [\t\n\r\f]) |
\S | kein wörtertrennendes Zeichen |
(?i) | Groß- und Kleinschreibung wird nicht unterschieden |
Metazeichen
Metazeichen erfüllen eine bestimmte Bedingung, z. B. Zeilenseparatoren
^ | Beginn einer Zeile |
$ | Ende einer Zeile |
\A | Beginn des Textes |
\Z | Ende des Textes |
. | irgendein beliebiges Zeichen |
Beispiel:
^BüroPlus => findet "BüroPlus" nur, wenn es am Zeilenanfang vorkommt
BüroPlus$ => findet "BüroPlus" nur, wenn es am Zeilenende vorkommt
^BüroPlus$ => findet "BüroPlus" nur, wenn er der einzige String in der Zeile ist.
BüroPl.s => findet "BüroPlus", "BüroPlas", "BüroPlxs" usw.
Standardmäßig garantiert das Metazeichen "^" nur, dass das Suchmuster sich am Anfang des Zielstrings befinden muss oder am Ende des Zielstrings mit dem Metazeichen "$". Kommen im Zielstring Zeilenumbrüche vor, so werden diese von "^" oder "$" nicht gefunden.
Iteratoren (=Häufigkeitsoperatoren)
Wenn Sie in einer Zeichenkette nach einem Zeichen suchen, können Sie mit einem Häufigkeitsoperator, genannt Interator, festlegen, wie oft nach einer Übereinstimmung gesucht werden soll.
Beispiel: Das Muster a+ verlangt mindestens ein a, dem dann noch 0 bis beliebig viele andere a folgen können.
Dieser Häufigkeitsoperator gilt jeweils für das davor stehende Zeichen, das Metazeichen oder den Teilausdruck.
Nachfolgende Tabelle enthält die Iteratoren zum Auffinden wiederholt auftretender Zeichen.
Vorkommen | gleichbedeutend wie | 'Gierig' oder 'Genügsam' | |
---|---|---|---|
* | kein- oder mehrmalig | {0,} | gierig |
+ | ein- oder mehrmalig | {1,} | gierig |
? | kein- oder einmalig | {0,1} | gierig |
{n} | genau n-malig | gierig | |
{n,m} | mindestens n-, aber höchstens m-malig | gierig | |
*? | kein- oder mehrmaliges | {0,}? | genügsam |
+? | ein- oder mehrmalig | {1,}? | genügsam |
?? | kein- oder einmalige | {0,1}? | genügsam |
{n}? | genau n-malig | genügsam | |
{n,}? | mindestens n-malig | genügsam | |
{n,m}? | mindestens n-malig, aber höchstens m-malig | genügsam |
Bedeutung von 'Gierig' und 'Genügsam'
"Genügsam": Sobald ein Ergebnis (Suchmuster wird erfüllt) gefunden wurde, wird nicht mehr weiter gesucht.
"Gierig": nimmt soviel wie möglich - Die Suche wird auch nach dem ersten Erfüllen des Suchmusters fortgesetzt.
Grenzen
Die in geschweiften Klammern stehenden Zahlen werden Grenzen genannt. Mit einer Grenze können Sie genau festlegen, wie oft ein Zeichen gesucht werden soll.
Die Ziffern in den geschweiften Klammern in der Form {n,m} geben an, wie viele Male das Suchmuster im Zielstring gefunden werden muss, um einen Treffer zu ergeben.
Die Angabe {n} ist gleichbedeutend mit {n,n} und findet genau n Vorkommen.
Die Form {n,} findet n oder mehrere Vorkommen.
Beispiel: a{4,5}
sucht eine Zeichenkette, die mindestens 4 Mal und höchstens 5 Mal das Zeichen a in Folge enthält.
Es gibt keine Begrenzung für die Zahlen n und m. Aber je größer sie sind, desto mehr Speicher und Zeit wird benötigt, um den regulären Ausdruck auszuwerten.
Hinweis
Beispiel: 'b+' und 'b*' angewandt auf den Zielstring 'abbbbc' findet 'bbbb' 'b+?' findet 'b' 'b*?' findet den leeren String 'b{2,3}?' findet 'bb' 'b{2,3}' findet 'bbb'
Falls eine geschweifte Klammer in einem anderen als dem eben vorgestellten Kontext vorkommt, wird es wie ein normales Zeichen behandelt.
Beispiele:
foob.*r | findet Strings wie 'foobar', 'foobalkjdflkj9r' und 'foobr' |
foob.+ | findet Strings wie 'foobar', 'foobalkjdflkj9r', aber nicht 'foobr' |
foob.?r | findet Strings wie 'foobar', 'foobbr' und 'foobr', aber nicht 'foobalkj9r' |
fooba{2}r | findet den String 'foobaar' |
fooba{2,}r | findet Strings wie 'foobaar', 'foobaaar', 'foobaa aar' etc. |
fooba{2,3}r | findet Strings wie 'foobaar', or 'foobaaar', aber nicht 'foobaaaar' |
Alternativen
Man kann eine Serie von Alternativen für Suchmuster angeben, indem man diese mit einem "|" (Alt GR + <>| (Taste links neben Y)) trennt. Auf diese Art findet das Suchmuster fee|fie|foe eines von "fee", "fie", oder "foe" im Zielstring - dies würde auch mit f(e|i|o)e erreicht.
Die erste Alternative beinhaltet alles vom letzten Muster-Limiter ("(", "[" oder natürlich den Anfang des Suchmusters) bis zum ersten "|". Die letzte Alternative beinhaltet alles vom letzten "|" bis zum nächsten Muster-Limiter.
Aus diesem Grunde ist es allgemein eine gute Gewohnheit, die Alternativen in Klammern anzugeben, um möglichen Missverständnissen darüber vorzubeugen, wo die Alternativen beginnen oder enden.
Alternativen werden von links nach rechts geprüft, so dass der Treffer im Zielstring aus den jeweils zuerst passenden Alternativen zusammengesetzt ist. Das bedeutet, dass Alternativen nicht notwendigerweise "gierig" sind.
Ein Beispiel: Wenn man mit "(foo|foot)" im Zielstring "barefoot" sucht, so passt bereits die erste Variante. Diese Tatsache mag nicht besonders wichtig erscheinen, aber es ist natürlich wichtig, wenn der gefundene Text weiter verwendet wird. Im Beispiel zuvor würde der Benutzer nicht "foot" erhalten, wie er eventuell beabsichtigt hatte, sondern nur "foo". Ergänzend bleibt zu sagen, dass "|" innerhalb von eckigen Klammern wie ein normales Zeichen behandelt wird, so dass z. B. [fee|fie|foe] dasselbe bedeutet wie [feio|]. Beispiel: foo(bar|foo) findet die Strings 'foobar' oder 'foofoo'.
Teilausdrücke
Das Klammernkonstrukt (...) wird auch dazu benutzt, reguläre Teilausdrücke zu definieren. Teilausdrücke werden von links nach rechts nummeriert, jeweils in der Reihenfolge ihrer öffnenden Klammer. Der erste Teilausdruck hat die Nummer 1, der gesamte reguläre Ausdruck hat die Nummer 0.
Beispiel: (foobar){8,10} findet Strings, die 8, 9 oder 10 Vorkommen von 'foobar' beinhalten foob([0-9]|a+)r findet 'foob0r', 'foob1r' , 'foobar', 'foobaar', 'foobaar' etc.