Citrix ADC

Expresiones regulares

Cuando quiere realizar operaciones de coincidencia de cadenas que son más complejas que las operaciones que realiza con los operadores CONTAINS ("<string>") o EQ ("<string>"), utilice expresiones regulares. La infraestructura de directivas del dispositivo Citrix® Citrix ADC® incluye operadores a los que puede 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 pase como argumentos deben ajustarse a la sintaxis de expresión regular que se describe en "<http://www.pcre.org/pcre.txt>." Puede obtener más información acerca de las expresiones regulares en "<http://www.regular-expressions.info/quickstart.html>" y en "<http://www.silverstones.com/thebat/Regex.html>."

El texto de destino para un operador que trabaja 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 sintaxis predeterminada que utiliza un operador de expresión regular para operar en el texto:

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

La cadena <text> representa el prefijo de expresión de sintaxis predeterminado que identifica una cadena de texto en 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 expresión de ejemplo siguiente comprueba si la dirección 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 se enmarca dentro de un par de marcas de barra 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 destino para 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 expresión regular. 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 inherentemente 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