Expressions régulières

Lorsque vous souhaitez effectuer des opérations de correspondance de chaînes plus complexes que les opérations que vous effectuez avec les opérateurs CONTAINS ("<string>") ou EQ ("<string>"), vous utilisez des expressions régulières. L’infrastructure de stratégie de l’appliance Citrix® Citrix ADC® comprend des opérateurs auxquels vous pouvez transmettre des expressions régulières en tant qu’arguments pour la correspondance de texte. Les noms des opérateurs qui travaillent avec des 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 d’expression régulière décrite dans "<http://www.pcre.org/pcre.txt>." Vous pouvez en savoir plus sur les expressions régulières sur "<http://www.regular-expressions.info/quickstart.html>" et "<http://www.silverstones.com/thebat/Regex.html>."

Le texte cible d’un opérateur qui fonctionne 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 syntaxe par défaut qui utilise un opérateur d’expression régulière pour fonctionner sur du texte :

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

La chaîne <text> représente le préfixe d’expression syntaxe par défaut 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 barres obliques (/), qui agissent comme des 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 pour la correspondance de chaînes est le texte entre les motifs regex_pattern1 et regex_pattern2. Vous pouvez utiliser un opérateur de texte sur l’étendue 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 intrinsèquement plus de temps que celui d’un opérateur tel que CONTAINS("<string>") ou EQ ("<string>"), qui fonctionne 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