ADC

Reguläre Ausdrücke

Wenn Sie Zeichenfolgenabgleichvorgänge 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 der Citrix® Citrix ADC® -Appliance umfasst Operatoren, an die Sie reguläre Ausdrücke als Argumente für den Textabgleich übergeben können. Die Namen der Operatoren, die mit regulären Ausdrücken arbeiten, umfassen 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 unter beschrieben wird. Weitere Informationen zu regulären Ausdrücken finden "<http://www.pcre.org/pcre.txt>." Sie unter "<http://www.regular-expressions.info/quickstart.html>" und unter "<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 Standard-Syntaxausdrucks, der einen Operator für reguläre Ausdrücke verwendet, um Text zu arbeiten:

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

Die Zeichenfolge <text> stellt das standardmäßige Syntaxausdruckpräfix dar, das eine Textzeichenfolge in einem Paket identifiziert (z. B. HTTP.REQ.URL). Die Zeichenfolge <regex_operator> stellt den Operator für reguläre Ausdrücke dar. 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 überprüft, ob die URL in einem HTTP-Paket die Zeichenfolge *.jpeg enthält (wobei * ein Platzhalter ist) und gibt einen booleschen Wert TRUE oder FALSE zurück, um das Ergebnis anzuzeigen. Der reguläre Ausdruck wird in ein Paar von Schrägstrichen (/) eingeschlossen, die als Trennzeichen fungieren.

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

Operatoren für reguläre Ausdrücke können kombiniert werden, um den Bereich 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 von den Operatoren für reguläre Ausdrücke definiert wird. 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:

Die Auswertung eines regulären Ausdrucks dauert inhärent mehr Zeit als die für einen Operator wie CONTAINS ("<string>") oder EQ ("<string>"), die mit einfachen String-Argumenten 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