ADC

Expresiones regulares

Cuando quiere realizar operaciones de coincidencia de cadenas más complejas que las operaciones que realiza con los operadores CONTAINS("<string>") o EQ("<string>"), utiliza expresiones regulares. La infraestructura de directivas del dispositivo Citrix® NetScaler® incluye operadores a los que se pueden pasar expresiones regulares como argumentos para la coincidencia de texto. Los nombres de los operadores que trabajan con expresiones regulares incluyen la cadena REGEX. Las expresiones regulares que se pasan como argumentos deben ajustarse a la sintaxis de expresiones regulares que se describe en "<http://www.pcre.org/pcre.txt>." Puede obtener más información sobre las expresiones regulares en "<http://www.regular-expressions.info/quickstart.html>" y en "<http://www.silverstones.com/thebat/Regex.html>."

El texto de destino de un operador que funciona con expresiones regulares puede ser texto o el valor de un encabezado HTTP. A continuación se muestra el formato de una expresión de directiva avanzada que utiliza un operador de expresión regular para operar con texto:

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

La cadena <text> representa el prefijo de expresión de directiva avanzada que identifica una cadena de texto de un paquete (por ejemplo, HTTP.REQ.URL). La cadena <regex_operator> representa el operador de expresión regular. La expresión regular siempre comienza con la cadena re. Un par de delimitadores coincidentes, representados por <delimiter>, encierran la cadena <regex_pattern>, que representa la expresión regular.

La siguiente expresión de ejemplo comprueba si la URL de un paquete HTTP contiene la cadena *.jpeg (donde * es un comodín) y devuelve un valor booleano TRUE o FALSE para indicar el resultado. La expresión regular está encerrada entre un par de barras diagonal (/), que actúan como delimitadores.

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

Los operadores de expresiones regulares se pueden combinar para definir o refinar el alcance de una búsqueda. Por ejemplo, <text>.AFTER_REGEX(reregex_pattern1).BEFORE_REGEX(reregex_pattern2) especifica que el objetivo de la coincidencia de cadenas es el texto entre los patrones regex_pattern1 y regex_pattern2. Puede utilizar un operador de texto en el ámbito definido por los operadores de expresiones regulares. Por ejemplo, puede utilizar el operador CONTAINS("<string>") para comprobar si el ámbito definido contiene la cadena abc:

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

Nota

El proceso de evaluación de una expresión regular lleva intrínsecamente más tiempo que el de un operador como CONTAINS("<string>") o EQ("<string>"), que funcionan con argumentos de cadena simples. Debe usar expresiones regulares solo si su requisito está fuera del alcance de otros operadores.

Expresiones regulares

En este artículo