Configurando Apache: Expresiones regulares

¿Qué son? ¿Para qué sirven? ¿Cómo utilizarlas?

Una expresión regular o ” regexp ” es un patrón compuesto por caracteres y meta-caracteres que nos permite buscar un texto determinado en una cadena.

Los meta-caracteres son caracteres con un significado específico dentro de las expresiones que vamos a ver a continuación. Estos caracteres tienen un significado especial a la hora de usarlos en comandos Linux como “grep”, “sed” y en este caso nos servirá más adelante para poder configurar en nuestro servidor web Apache nuevas reglas en modsecurity2, mod_rewrite, mod_evasive y demás tareas que requieren buscar expresiones dentro de una cadena.
Aquí tenéis una lista de meta-caracteres que nos vamos a encontrar con algún que otro ejemplo:

  • . Significa cualquier caracter.
  • ^Indica el principio de una línea, por ejemplo: ^GNU buscara todas las líneas que comiencen por “GNU”.
  • $ Indica el final de una línea, por ejemplo: final$ buscará todas las líneas que terminen en “final”.
  • * Indica cero o más repeticiones del caracter anterior, por ejemplo: fiesh*ta* buscará fiest, fiesta, fieshta fieshhta, fiestaaa y fieshhtaaaaaaa.
  • + Indica una o más repeticiones del caracter anterior, por ejemplo: Ampa+ro, m+anuela.
  • ? Indica caracter opcional, por ejemplo: colou?r tiene la U opcional, podrá tener como coincidencias color y colour.
  • \< Indica el comienzo de una palabra.
  • \> Indica el final de una palabra.
  • \ Caracter de escape. Da significado literal a un metacaracter.
  • [ ] Uno cualquiera de los caracteres entre los corchetes. Ejemplo: [A-Z] (desde A hasta Z).
  • [^ ] Cualquier caracter distinto de los que figuran entre corchetes: Ejemplo: [^A-Z].
  • { } Nos permiten indicar el número de repeticiones del patrón anterior que deben darse.
  • | Nos permite indicar caracteres alternativos, por ejemplo: (^|[?&])
  • ( ) Nos permiten agrupar patrones, por ejemplo: ([0-9A-F]+:)+

Aquí tenéis un enlace con más información acerca de las expresiones regulares, sacado de la web oficial de Apache.