Especificaciones de RE2 para mapas de URLs

En esta página se describen los requisitos y las limitaciones asociados al uso de la sintaxis RE2 para las expresiones regulares de los mapas de URLs.

RE2 tiene las siguientes limitaciones integradas:

  • RE2 no admite aserciones de búsqueda hacia delante ni hacia atrás arbitrarias, ni tampoco referencias inversas. En concreto, no se admiten los siguientes operadores de referencia inversa:
    • (?=): búsqueda positiva
    • (?!) - lookahead negativo
    • (?<=): búsqueda hacia atrás positiva
    • (?<!): búsqueda hacia atrás negativa
    • \N: referencia inversa donde N es un número entero.
  • RE2 no reconoce \cx como el carácter Control-X.
  • RE2 no reconoce los operadores de agrupación atómica (?>...) y ++.
  • RE2 no reconoce \C, \G ni \X.
  • RE2 no reconoce subpatrones condicionales (?(...)...), comentarios (?#...), referencias de patrones (?R) (?1) (?P>foo) ni llamadas de C (?C...).

Además de las limitaciones de RE2 descritas anteriormente, aplicamos más restricciones a la sintaxis de las expresiones regulares mediante la siguiente lista de elementos permitidos:

Cadena vacía y análogos de cadenas vacías

Operador Descripción
^ Al principio del texto o de la línea (m=true)
$ Al final del texto (como \z, no \Z) o de la línea (m=true)
\A Al principio del texto
\b En el límite de una palabra ASCII (\w a un lado y \W, \A o \z al otro)
\B No en el límite de una palabra ASCII
\g Al principio del subtexto que se está buscando
\G Al final del último partido
\z Al final del texto

Repeticiones

Operador Descripción
x* Cero o más x, preferiblemente más
x+ Una o más x, preferiblemente más
x? Cero o una x, preferiblemente una
x{n,m} N o n+1 o ... o m x, preferiblemente más
x{n,} N o más x, preferir más
x{n} Exactamente n x
x*? Cero o más x, preferiblemente menos
x+? Una o varias x, preferiblemente menos
x?? Cero o una x, preferiblemente cero
x{n,m}? N, n+1, ..., m x (preferiblemente, el menor número posible)
x{n,}? N o más x, preferir menos
x{n}? Exactamente n x

Subcoincidencia

Operador Descripción
(re) Grupo de captura numerado (subcoincidencia)
(?P<name>re) Grupo de captura con nombre y número (subcoincidencia)
(?<name>re) Grupo de captura con nombre y número (subcoincidencia)
(?:re) Grupo sin captura
(?flags) Define marcas en el grupo actual; no captura.
(?flags:re) Definir marcas durante re; sin captura

Cocinas

Operador Descripción
[] Cocinas
\d Dígitos (≡ [0-9])
\D No son dígitos (≡ [^0-9])
\s Espacio en blanco (≡ [\t\n\f\r ])
\S No es un espacio (≡ [^\t\n\f\r ])
\w Caracteres de palabra (≡ [0-9A-Za-z_])
\W No son caracteres de palabra (≡ [^0-9A-Za-z_])
[[:alnum:]] Alfanumérico (≡ [0-9A-Za-z])
[[:alpha:]] Alfabético (≡ [A-Za-z])
[[:ascii:]] ASCII (≡ [\x00-\x7F])
[[:blank:]] Espacio (≡ [\t ])
[[:cntrl:]] Control (≡ [\x00-\x1F\x7F])
[[:digit:]] Dígitos (≡ [0-9])
[[:lower:]] Minúsculas (≡ [a-z])
[[:space:]] Espacio en blanco (≡ [\t\n\v\f\r ])
[[:upper:]] Mayúscula (≡ [A-Z])
[[:word:]] Caracteres de palabra (≡ [0-9A-Za-z_])
[[:xdigit:]] Dígito hexadecimal (≡ [0-9A-Fa-f])

Caracteres permitidos en intervalos

Intervalo de caracteres Descripción
0-9, A-Z, a-z Alfanumérico
\x00-\x7F ASCII
0-9A-Fa-f Dígitos hexadecimales
\t\n\v\f\r Espacio en blanco
^ Negación de intervalo
!"#$%&'()*+,\-.:;<=>?@[\\\]^_`{|}~ Otros caracteres