Ejercicios sobre regex

Nota

Para comprobar la validez de su solución puede utilizar la orden grep:

  • Sin opción específica podrá ensayar BRE:

    # grep '\<\(p\|P\)alabra\>' <<<"Esto es una palabra aislada."
    
  • Con la opción -E (o egrep) podrá ensayar ERE:

    # grep -E '\b(?p|P)alabra\b' <<<"Esto es una palabra aislada."
    
  • Con la opción -P podrá ensayar PCRE:

    # grep -P '\b(:?p|P)alabra\b' <<<"Esto es una palabra aislada."
    
  1. Usando únicamente los patrones básicos de los apuntes, indique las expresiones regulares que:

    1. Concuerdan con dos «e» separadas por un caracter cualquiera.

    2. Concuerdan con dos «e» separadas por tres o cuatro caracteres cualquiera.

    3. Concuerdan con frases que tiene al menos tres «e».

    4. Concuerdan con frases que contiene la palabra «bola» ó «bolo».

    5. Concuerdan con frases que empiezan por «a», tienen al menos una «J» y acaban en «e».

    6. Concuerdan con frases que contiene al menos dos veces la palabra «bola».

    7. Concuerdan con frases que empiezan por «11» y acaban por «99».

    8. Concuerdan con frases de tres palabras (considérese que no hay comas ni puntos).

    9. Concuerdan con frases de menos de 100 caracteres.

    10. Concuerdan con frases que sólo tienen vocales.

    Nota

    Algunas soluciones, si nos restringimos al uso de los patrones básicos, serán algo definicientes aún.

  2. Repase las soluciones anteriores para mejorarlas usando también los patrones avanzados.

  3. Indique una expresión regular que:

    1. contenga tres vocales seguidas.

    2. contega tres vocales.

    3. concuerde con una sucesión de números y caracteres asimilables al espacio.

    4. concuerde con dos palabras.

    5. concuerde con una frase de entre 20 y 30 caracteres.

    6. contenga tres signos de interrogación.

    7. contenga dos «a» seguidas y dos «e» seguidas en cualquier orden.

  4. Para la configuración de un servidor nginx necesitamos utilizar un patrón que concuerde con rutas que no empiezan por /uploads y que sí acaban por .php. Por tanto, concordará con rutas tales como:

    /scripts/01/index.php
    /plugins/users.php
    

    pero no con rutas como:

    /plugins/readme.txt
    /uploads/2009/01/script.php