Ansichten:

Der Zeichenkettenvergleich erfolgt über reguläre Ausdrücke. Die folgende Tabelle enthält einige Beispiele für häufig verwendete reguläre Ausdrücke. Zur Kennzeichnung eines regulären Ausdrucks wird der Operator '.REG.' der Zeichenkette vorangestellt.

Zu diesem Thema stehen online mehrere Websites und Tutorials zur Verfügung, u. a. die Seite PerlDoc unter:

http://www.perl.com/doc/manual/html/pod/perlre.html

Warnung:

Reguläre Ausdrücke können den Zeichenkettenvergleich stark beeinflussen. Reguläre Ausdrücke sollten deshalb nur von Administratoren verwendet werden, die mit deren Syntax ausreichend vertraut sind. Fehlerhafte reguläre Ausdrücke können die Systemleistung stark einschränken. Zu Beginn empfehlen sich einfache reguläre Ausdrücke ohne komplexe Syntax. Bei der Einführung neuer Regeln sollte die Aktion zum Archivieren verwendet werden und das Verhalten des Messaging Security Agent bei der Bearbeitung von Nachrichten gemäß der neuen Regel beobachtet werden. Wird die Regel ohne unerwünschte Nebeneffekte ausgeführt, kann die Aktion entsprechend geändert werden.

Beispiel für reguläre Ausdrücke

Die folgende Tabelle enthält einige Beispiele für häufig verwendete reguläre Ausdrücke. Zur Kennzeichnung eines regulären Ausdrucks wird der Operator '.REG.' der Zeichenkette vorangestellt.

Tabelle 1. Zählen und Gruppieren

Element

Bedeutung

Beispiel

.

Der Punkt steht für ein beliebiges Zeichen mit Ausnahme des Zeilenvorschubzeichens.

mi. steht zum Beispiel für mir oder mit etc.

m.n steht für mein, man etc.

*

Das Sternchen (*) entspricht null oder mehreren Instanzen des davor stehenden Elements.

mi* steht zum Beispiel für m, mi, mii, usw.

+

Das Plus-Zeichen (+) entspricht einer oder mehreren Instanzen des davor stehenden Elements.

mi+ steht zum Beispiel für mi, mii, miii, aber nicht für m

?

Das Fragezeichen steht für null oder eine Instanz des davor stehenden Elements.

mi?r entspricht also mr oder mir, aber nicht miir, miiir usw.

( )

Runde Klammern fassen alles, was sich zwischen ihnen befindet, zu einer Einheit zusammen.

m(ein)+ entspricht mein oder meinein oder meineinein usw. Das Plus-Zeichen (+) bezieht sich hier also auf die Zeichenfolge innerhalb der runden Klammern. Der reguläre Ausdruck beginnt mit einem m, gefolgt von mindestens einer ein-Gruppe.

[ ]

Eckige Klammern stehen für eine Reihe oder einen Bereich von Zeichen.

m[aeiou]+ entspricht ma, me, mi, mo, mu, maa, mae, mai usw. Das Plus-Zeichen bezieht sich auf die Zeichenfolge innerhalb der eckigen Klammern. Der reguläre Ausdruck beginnt mit einem m, gefolgt von einer beliebigen Kombination aus einem oder mehreren der Zeichen aeiou.

m[A-Z] findet mA, mB, mC bis mZ. Die Zeichen in eckigen Klammern entsprechen allen groß geschriebenen Buchstaben zwischen A und Z.

[ ^ ]

Der Zirkumflex (^) innerhalb eckiger Klammern schließt die eingegebene Zeichenfolge oder den Zeichenbereich aus. Der reguläre Ausdruck enthält keines der Zeichen in diesem Bereich/dieser Zeichenfolge.

m[^aeiou] findet mb, mc, md usw., d. h. für "m" gefolgt von einem beliebigen Zeichen mit Ausnahme eines Vokals.

{ }

Geschweifte Klammern geben eine bestimmte Anzahl von Instanzen des davor stehenden Elements an. Ein einzelner Wert innerhalb der Klammern bedeutet, dass nur diese Anzahl von Instanzen gesucht wird. Mehrere durch Komma getrennte Werte stehen für eine Reihe gültiger Instanzen des davor stehenden Zeichens. Eine einzelne Ziffer vor einem Komma gibt eine Mindestanzahl ohne Obergrenze an.

mi{3} findet miii, also m gefolgt von genau drei Instanzen von ia. mi{2,4} findet mii, miii, miiii (aber nicht miiiii), also m gefolgt von zwei, drei oder vier Instanzen von i. mi{4,} findet miiii, miiiii, miiiiii usw., also m gefolgt von mindestens vier Instanzen von i.

Tabelle 2. Zeichenklassen (Kurzschrift)

Element

Bedeutung

Beispiel

\d

Eine beliebige Ziffer, die funktional den Werten [0-9] oder [[:ziffer:]] entspricht.

\d findet 1, 12, 123 usw. (aber nicht 1b7), also eine Kombination aus einer oder mehreren Ziffern.

\D

Ein beliebiges Zeichen mit Ausnahme von Ziffern, das funktional den Werten [^0-9] oder [^[:digit:]] entspricht

\D entspicht a, ab, ab& usw. (aber nicht 1), also mindestens einem beliebigen Zeichen mit Ausnahme von Ziffern (0, 1, 2, 3, 4, 5, 6, 7, 8 oder 9)

\w

Beliebiges "Wort"-Zeichen, also ein beliebiges alphanumerisches Zeichen, das funktional den Werten [_A-Za-z0-9] oder [_[:alnum:]] entspricht

\w entspricht a, ab, a1, usw. (aber nicht !&), also einem oder mehreren groß oder klein geschriebenen Buchstaben oder Ziffern, nicht jedoch Satzzeichen oder Sonderzeichen

\W

Ein beliebiges, nicht-alphanumerisches Zeichen, das funktional den Werten [^_A-Za-z0-9] or [^_[:alnum:]] entspricht

\W entspricht *, & usw. (aber nicht ace oder a1), also einem oder mehreren beliebigen Zeichen mit Ausnahme von groß oder klein geschriebenen Buchstaben und Ziffern.

\s

Ein beliebiges Textumbruchzeichen, wie z. B. Leerzeichen, geschütztes Leerzeichen, das funktional den Werten [[:space]] entspricht

mutter\s findet 'mutter' gefolgt von einem beliebigen Textumbruchzeichen. Der Satz "Mutter kocht leckere Suppe" ist ein regulärer Ausdruck, nicht aber "Mir schmeckt Mutters Suppe".

\S

Ein beliebiges Nicht-Textumbruchzeichen, also kein Leerzeichen, geschütztes Leerzeichen usw., das funktional den Werten [^[:space]] entspricht

mutter\S findet 'mutter' gefolgt von einem beliebigen Zeichen mit Ausnahme von Textumbruchzeichen. Der Satz "Mutter kocht leckere Suppe" ist ein regulärer Ausdruck, nicht aber "Mir schmeckt Mutters Suppe".
Tabelle 3. Zeichenklassen

Element

Bedeutung

Beispiel

[:alpha:]

Ein Zeichen des Alphabets

.REG. [[:alpha:]] findet abc, def, xxx, nicht aber 123 oder @#$.

[:digit:]

Eine beliebige Ziffer; entspricht funktional dem Ausdruck \d

.REG. [[:digit:]] steht für 1, 12, 123, usw.

[:alnum:]

Ein beliebiges alphanumerisches "Wort"-Zeichen; entspricht funktional dem Ausdruck \w

.REG. [[:alnum:]] findet abc, 123, nicht aber ~!@.

[:space:]

Ein beliebiges Textumbruchzeichen, wie z. B. Leerzeichen, geschütztes Leerzeichen; entspricht funktional dem Ausdruck [[:space]]

.REG. (mutter)[[:space:]] findet "mutter" gefolgt von einem beliebigen Textumbruchzeichen. Der Satz "Mutter kocht leckere Suppe" ist ein regulärer Ausdruck, nicht aber "Mir schmeckt Mutters Suppe".

[:graph:]

Ein beliebiges Zeichen mit Ausnahme von Leer-, Steuer- und ähnlichen Zeichen

.REG. [[:graph:]] findet 123, abc, xxx, ><”, nicht aber Leer- oder Steuerzeichen.

[:print:]

Ein beliebiges Zeichen (ähnlich dem Ausdruck [:graph:]), einschließlich Leerzeichen

.REG. [[:print:]] findet 123, abc, xxx, ><” und Leerzeichen.

[:cntrl:]

Ein beliebiges Steuerzeichen (z. B. STRG + C, STRG + X)

.REG. [[:cntrl:]] findet 0x03, 0x08, nicht aber abc, 123, !@#.

[:blank:]

Leer- und Tabulatorzeichen

.REG. [[:blank:]] findet Leer- und Tabulatorzeichen, nicht aber für 123, abc, !@#

[:punct:]

Satzzeichen

.REG. [[:punct:]] steht für ; : ? ! ~ @ # $ % & * ‘ “ , usw., nicht aber für 123, abc

[:lower:]

Ein beliebiger Kleinbuchstabe des Alphabets (Hinweis: Die Funktion „Übereinstimmung: Unterscheidung Groß-/Kleinschreibung“ muss aktiviert sein, da sonst die Funktion [:alnum:] ausgeführt wird)

.REG. [[:lower:]] findet abc, Def, sTress, Do, usw., nicht aber für ABC, DEF, STRESS, DO, 123, !@#.

[:upper:]

Ein beliebiger Großbuchstabe des Alphabets (Hinweis: Die Funktion „Übereinstimmung: Unterscheidung Groß-/Kleinschreibung“ muss aktiviert sein, da sonst die Funktion [:alnum:] ausgeführt wird)

.REG. [[:upper:]] findet ABC, DEF, STRESS, DO usw., nicht aber abc, Def, Stress, Do, 123, !@#.

[:xdigit:]

Die in einer Hexadezimalzahl zulässigen Ziffern (0-9a-fA-F)

.REG. [[:xdigit:]] steht für 0a, 7E, 0f usw.

Tabelle 4. Pattern-Anker

Element

Bedeutung

Beispiel

^

Bezeichnet den Anfang einer Zeichenkette.

^(ungeachtet) findet einen beliebigen Textblock, der mit 'ungeachtet' beginnt. Der Satz 'Ungeachtet der Tatsache, dass mir Mutters Suppe schmeckt' ist ein regulärer Ausdruck, nicht aber 'Mutters Suppe schmeckt mir ungeachtet der Tatsache, dass'.

$

Bezeichnet das Ende einer Zeichenkette.

(ungeachtet)$ findet einen beliebigen Textblock, der mit 'ungeachtet' endet. Der Satz 'Mutters Suppe schmeckt mir der Tatsache ungeachtet' ist ein regulärer Ausdruck, nicht aber 'Ungeachtet der Tatsache, dass mir Mutters Suppe schmeckt'.

Tabelle 5. Escape-Sequenzen und Literale

Element

Bedeutung

Beispiel

\

Zeichen, die in regulären Ausdrücken eine besondere Bedeutung haben (zum Beispiel "+").

(1) .REG. C\\C\+\+ steht für "C\C++".

(2) .REG. \* steht für *.

(3) .REG. \? steht für ?.

\t

Bezeichnet ein Tabulatorzeichen.

(Stress)\t findet einen beliebigen Textblock, der die Zeichenfolge 'Stress', gefolgt von einem Tabulatorzeichen (ASCII 0x09) enthält.

\n

Bezeichnet ein Zeilenumbruchzeichen.

Anmerkung:

Ein Zeilenumbruchzeichen wird je nach Plattform unterschiedlich interpretiert. Unter Windows ist ein Zeilenumbruch ein Zeichenpaar, bestehend aus einem Wagenrücklauf und einem Zeilenvorschub. Unter Unix oder Linux wird beim Zeilenumbruch ein Zeilenvorschub und auf einem Macintosh ein Wagenrücklauf ausgeführt.

(Stress)\n\n steht für einen beliebigen Textblock, der die Zeichenkette 'Stress' gefolgt von zwei Zeilenumbruchzeichen (ASCII 0x0A) enthält.

\r

Bezeichnet ein Wagenrücklaufzeichen.

(Stress)\r steht für einen beliebigen Textblock, der die Zeichenkette 'Stress' gefolgt von einem Wagenrücklaufzeichen (ASCII 0x0D) enthält.

\b

Bezeichnet ein Rücksprungzeichen.

OR

Bezeichnet Grenzen.

(Stress)\b steht für einen beliebigen Textblock, der die Zeichenkette "Stress" gefolgt von einem Rücksprungzeichen (ASCII 0x08) enthält.

Eine Wortgrenze (\b) bezeichnet eine Stelle zwischen einem Zeichen aus \w und einem aus \W (oder umgekehrt). Innerhalb der Zeichenklassen steht \b meist für ein Rücksprungzeichen, nicht für ein Wortgrenze.

So kann der folgende reguläre Ausdruck der Sozialversicherungsnummer entsprechen: .REG. \b\d{3}-\d{2}-\d{4}\b

\xhh

Bezeichnet ein ASCII-Zeichen in Hexadezimalschreibweise, wobei hh für den zweistelligen Hexadezimalwert steht.

\x7E(\w){6} steht für einen beliebigen Textblock, der ein 'Wort' mit genau sechs alphanumerischen Zeichen mit vorangestellter Tilde (~) enthält. Die Wörter '~ab12cd' oder '~Pa3499' wären also reguläre Ausdrücke, das Wort '~hoppla' jedoch nicht.

Generator für reguläre Ausdrücke

Bei der Entscheidung, wie Regeln für die Funktion "Prävention vor Datenverlust" konfiguriert werden sollten, berücksichtigen Sie, dass der Generator für reguläre Ausdrücke nur einfache Ausdrücke gemäß den folgenden Regeln und Einschränkungen erzeugen kann:

  • Variablen können nur alphanumerische Zeichen enthalten.

  • Alle anderen Zeichen, wie [-], [/] usw., können nur als Konstanten verwendet werden.

  • Variablenbereiche können nur von A-Z und 0-9 definiert werden, Bereiche könne nicht begrenzt werden, beispielsweise auf A-D.

  • Bei regulären Ausdrücken, die von diesem Tool erzeugt wurden, wird die Groß-/Kleinschreibung berücksichtigt.

  • Reguläre Ausdrücke, die von diesem Tool erzeugt wurden, können nur eine positive Übereinstimmung ergeben, keine negativen Übereinstimmungen ('wenn keine Übereinstimmung').

  • Ausdrücke, die auf Ihrem Beispiel basieren, können nur mit genau derselben Anzahl von Zeichen und Leerzeichen wie in Ihrem Beispiel übereinstimmen. Das Tool kann keine Pattern erzeugen, die mit 'einem oder mehreren' eines bestimmten Zeichens oder einer Zeichenfolge übereinstimmen.

Komplexe Syntax von Ausdrücken

Ein Schlüsselwort-Ausdruck setzt sich aus Tokens zusammen. Dies ist die kleinste Einheit beim Vergleich einer Übereinstimmung zwischen Ausdruck und Inhalt. Ein Token kann ein Operator, ein logisches Symbol oder der Operand sein, z. B. das Argument oder der Wert, der den Operator auslöst.

Operatoren umfassen .AND., .OR., .NOT., .NEAR., .OCCUR., .WILD., .(. und .). Der Operand und der Operator müssen durch eine Leerstelle getrennt sein. Ein Operand kann außerdem mehrere Tokens enthalten. Weitere Informationen finden Sie unter Schlüsselwörter.

Funktionsweise regulärer Ausdrücke

Das folgende Beispiel beschreibt die Funktionsweise eines der Standardfilter, des Content-Filters für Sozialversicherungsnummern:

[Format] .REG. \b\d{3}-\d{2}-\d{4}\b

Der obere Ausdruck verwendet \b für ein Rücksprungzeichen, gefolgt von \d für eine beliebige Ziffer und dann von {x} für die Anzahl der Ziffern. Zum Schluss folgt - für einen Gedankenstrich. Dieser Ausdruck stimmt mit der Sozialversicherungsnummer überein. Die folgende Tabelle beschreibt die Zeichenfolgen, die mit dem Beispiel für reguläre Ausdrücke gefunden werden:

Tabelle 6. Zahlen, die mit dem regulären Ausdruck für die Sozialversicherungsnummer übereinstimmen

.REG. \b\d{3}-\d{2}-\d{4}\b

333-22-4444

Übereinstimmung

333224444

keine Übereinstimmung

333 22 4444

keine Übereinstimmung

3333-22-4444

keine Übereinstimmung

333-22-44444

keine Übereinstimmung

Wenn Sie den Ausdruck wie folgt ändern,

[Format] .REG. \b\d{3}\x20\d{2}\x20\d{4}\b

stimmt der neue Ausdruck mit der folgenden Sequenz überein:

333 22 4444