Definiciones de carácter
Primeramente pasamos a la definición de caracteres en una expresión regular. Vamos a detallar los metacaracteres que permiten especificar una plantilla que concuerde con un texto de unas características concretas. Dentro de las definiciones de caracteres podremos especificar caracteres genéricos, rangos de caracteres, exclusión de caracteres, literales y otras características adicionales.
Construyendo expresiones regulares: ejemplos
Sintaxis de fecha del tipo dd/mm/aa
En este ejemplo sólo pretendemos comprobar que la sintaxis de la fecha es correcta, es decir que estábien construida independientemente de que la fecha sea realmente válida.
Editar ficheros con expresiones regulares
Un de las principales ventajas de las expresiones regulares es poder editar ficheros, sustituir textos o generar nuevos ficheros manipulando el contenido de otros.
sed
Con sed podemos ejecutar:
sed "s/expresión_regular/sustitución/gi" fichero |
/g indica edición global y afecta a todas las apariciones del texto correspondiente a la expresión regular en el fichero. Si omitimos /g la sustitución sólo afecta a la primera aparición de cada línea. La opción /i evita la distinción entre mayúsculas y minúsculas.
Existen varios métodos de búsqueda
/i evita la distinción entre mayúsculas y minúsculas.
/s activa modo "línea única". En este modo los saltos de líneas verifican el punto.
/m activa modo "multilínea". En este modo los saltos de líneas verifican el $ y el carácter siguiente el ^.
/g global, hace referencia a todas las apariciones de la expresión regular. Si se omite sólo hacemos referencia a la primera.
Ejemplos
Expresión para comprobar una dirección de correo electrónico:
"^([0-9a-zA-Z]+)([._-]([0-9a-zA-Z]+))*@([0-9a-zA-Z]+)([._-]([0-9a-zA-Z]+))*[.]([0-9a-zA-Z]){2}([0-9a-zA-Z])?$" |
Expresión de un hiperenlace
"<a[ ]{1,}href=[\"']{0,}([a-zA-Z0-9/:~._#]{0,})[\"']{0,}[^>]{0,}>([^<]{0,})</a>" |
Referencias
Cuando utilizamos subexpresiones, podemos utilizar el valor encontrado correspondiente a la subexpresión posteriormente, normalmente cuando realizamos sustituciones en cadenas de texto. Las subexpresiones se ordenan de izquierda a derecha correspondiendo \1 a la primera subexpresión, \2 a la segunda y así sucesivamente.
Por ejemplo, si la expresión regular es:
([A-Za-z]+)([0-9]+) |
entonces \1 se refiere al conjunto de letras que han verificado la expresión regular (primer paréntesis) y \2 a una serie de dígitos.
Además el carácter "&" como referencia equivale a toda la expresión regular.