ADC

Reguläre Ausdrücke

Wenn Sie Zeichenfolgenabgleichsoperationen ausführen möchten, die komplexer sind als die Operationen, die Sie mit den Operatoren CONTAINS("<string>") oder EQ("<string>") ausführen, verwenden Sie reguläre Ausdrücke. Die Richtlinieninfrastruktur auf der Citrix® NetScaler® Appliance umfasst Operatoren, an die Sie reguläre Ausdrücke als Argumente für den Textabgleich übergeben können. Zu den Namen der Operatoren, die mit regulären Ausdrücken arbeiten, gehört die Zeichenfolge REGEX. Die regulären Ausdrücke, die Sie als Argumente übergeben, müssen der Syntax für reguläre Ausdrücke entsprechen, die in beschrieben ist. "<http://www.pcre.org/pcre.txt>." Sie können mehr über reguläre Ausdrücke unter "<http://www.regular-expressions.info/quickstart.html>" und unter erfahren "<http://www.silverstones.com/thebat/Regex.html>."

Der Zieltext für einen Operator, der mit regulären Ausdrücken arbeitet, kann entweder Text oder der Wert eines HTTP-Headers sein. Es folgt das Format eines erweiterten Richtlinienausdrucks, der einen Operator für reguläre Ausdrücke verwendet, um Text zu verwenden:

<text>.<regex_operator>(re<delimiter><regex_pattern><delimiter>)

Die Zeichenfolge <text> stellt das Präfix für den erweiterten Richtlinienausdruck dar, das eine Textzeichenfolge in einem Paket identifiziert (z. B. HTTP.REQ.URL). Die Zeichenfolge <regex_operator> repräsentiert den Operator für reguläre Ausdrücke Der reguläre Ausdruck beginnt immer mit der Zeichenfolge re. Ein Paar übereinstimmender Trennzeichen, dargestellt durch <delimiter>, umschließt die Zeichenfolge <regex_pattern>, die den regulären Ausdruck darstellt.

Der folgende Beispielausdruck prüft, ob die URL in einem HTTP-Paket die Zeichenfolge *.jpeg enthält (wobei * es sich um einen Platzhalter handelt) und gibt ein boolesches TRUE oder FALSE zurück, um das Ergebnis anzuzeigen. Der reguläre Ausdruck ist in ein Paar von Schrägstrichen (/) eingeschlossen, die als Trennzeichen dienen.

http.req.url.regex_match(re/.<asterisk>\.jpeg/)

Operatoren für reguläre Ausdrücke können kombiniert werden, um den Umfang einer Suche zu definieren oder zu verfeinern. <text>.AFTER_REGEX(reregex_pattern1).BEFORE_REGEX(reregex_pattern2) gibt beispielsweise an, dass das Ziel für den Zeichenfolgenabgleich der Text zwischen den Mustern regex_pattern1 und regex_pattern2 ist. Sie können einen Textoperator für den Bereich verwenden, der durch die Operatoren für reguläre Ausdrücke definiert ist. Beispielsweise können Sie den Operator CONTAINS ("<string>") verwenden, um zu überprüfen, ob der definierte Bereich die Zeichenfolge abc enthält:

<text>.AFTER_REGEX(re/regex_pattern1).BEFORE_REGEX(re/regex_pattern2/).CONTAINS("abc")

Hinweis

Der Prozess der Auswertung eines regulären Ausdrucks benötigt inhärent mehr Zeit als für einen Operator wie CONTAINS ("<string>") oder EQ ("<string>"), die mit einfachen Zeichenfolgenargumenten arbeiten. Sie sollten reguläre Ausdrücke nur verwenden, wenn Ihre Anforderung außerhalb des Bereichs anderer Operatoren liegt.

Reguläre Ausdrücke

In diesem Artikel