ADC

Expressions régulières

Lorsque vous souhaitez effectuer des opérations de correspondance de chaînes plus complexes que celles effectuées avec les opérateurs CONTIENS ("<string>") ou EQ ("<string>"), vous utilisez des expressions régulières. L’infrastructure de stratégies de l’appliance Citrix® NetScaler® inclut des opérateurs auxquels vous pouvez transmettre des expressions régulières en tant qu’arguments pour la mise en correspondance de texte. Les noms des opérateurs qui travaillent avec les expressions régulières incluent la chaîne REGEX. Les expressions régulières que vous transmettez en tant qu’arguments doivent être conformes à la syntaxe des expressions régulières décrite dans "<http://www.pcre.org/pcre.txt>." Pour en savoir plus sur les expressions régulières, consultez "<http://www.regular-expressions.info/quickstart.html>" et à "<http://www.silverstones.com/thebat/Regex.html>."

Le texte cible d’un opérateur qui travaille avec des expressions régulières peut être du texte ou la valeur d’un en-tête HTTP. Voici le format d’une expression de stratégie avancée qui utilise un opérateur d’expression régulière pour opérer sur du texte :

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

La chaîne <text> représente le préfixe d’expression de stratégie avancée qui identifie une chaîne de texte dans un paquet (par exemple, HTTP.REQ.URL). La chaîne <regex_operator> représente l’opérateur d’expression régulière. L’expression régulière commence toujours par la chaîne re. Une paire de délimiteurs correspondants, représentés par <delimiter>, entoure la chaîne <regex_pattern>, qui représente l’expression régulière.

L’exemple d’expression suivant vérifie si l’URL d’un paquet HTTP contient la chaîne *.jpeg (où * est un caractère générique) et renvoie une valeur booléenne TRUE ou FALSE pour indiquer le résultat. L’expression régulière est entourée d’une paire de barre oblique (/), qui servent de délimiteurs.

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

Les opérateurs d’expression régulière peuvent être combinés pour définir ou affiner la portée d’une recherche. Par exemple, <text>.AFTER_REGEX(reregex_pattern1).BEFORE_REGEX(reregex_pattern2) spécifie que la cible de la correspondance de chaîne est le texte entre les motifs regex_pattern1 et regex_pattern2. Vous pouvez utiliser un opérateur de texte sur la portée définie par les opérateurs d’expression régulière. Par exemple, vous pouvez utiliser l’opérateur CONTAINS ("<string>") pour vérifier si la portée définie contient la chaîne abc :

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

Remarque

Le processus d’évaluation d’une expression régulière prend plus de temps que celui d’un opérateur tel que CONtains ("<string>") ou EQ ("<string>"), qui fonctionnent avec des arguments de chaîne simples. Vous devez utiliser des expressions régulières uniquement si votre exigence dépasse le champ d’application des autres opérateurs.

Expressions régulières

Dans cet article