Las Expresiones Regulares, o RegEx, son patrones que podemos usar para encontrar una determinada combinación de caracteres dentro de un texto. Las RegEx proporcionan una manera muy flexible y poderosa de buscar o reconocer cadenas de texto para luego imprimirlas, modificarlas o cambiar su formato.
Los lenguajes de programación más conocidos soportan RegEx: C, Ruby, XML, Visual Basic, Unix Shell, Java, JavaScript, Python y, por supuesto, Perl.
Existen dos tipos de RegEx en el estándar POSIX: Expresiones Regulares Básicas (BRE) y Expresiones Regulares Extendidas (ERE). Luego están las PCRE (Expresiones Regulares Compatibles con Perl, escritas en Lenguaje C e inspiradas en Perl.
Las RegEx fueron definidas en la década del 1950 y tienen su origen en Regular Events, una notación creada por Stephen C. Kleene, matemático estadounidense. No debemos confundir las RegEx con los
comodines de Shell, ya que éstos últimos
operan únicamente con los nombres de archivos.
Las expresiones regulares están compuestas por
Metacaracter RegEx | Significado |
* | cero o mas iteraciones del carácter inmediato que lo precede. |
. | cualquier carácter ordinario, excepto el ASCII de nueva linea . |
[ carácter(es) ] | cualquiera de los caracteres especificados entre corchetes; puede usarse guion - para delimitar un rango de caracteres tal como [a-f] , [1-5] , etcétera. |
^ | comienzo de línea en un fichero. |
$ | final de una línea en un fichero. |
Coincidencia de Caracteres
. | Cualquier carácter excepto Nueva Línea |
\w | Coincide cualquier palabra formada por caracteres (alfanuméricos + _ |
\W | Coincide cualquier no palabra formada por caracteres |
\d | Coincide cualquier dígito (0 -9 ) |
\D | Coincide cualquier no-dígito. |
\s | Coincide cualquier caracter de espacio en blanco . |
\S | Coincide cualquier caracter que no sea espacio en blanco . |
Anclas
^ | Coincide el inicio de una cadena. |
$ | Coincide con el final de una cadena |
\b | Coincide con una palabra límite |
\B | Coincide con un límite que no es palabra |
Cuantificadores
* | Coincide 0 o mas del elemento precedente. |
+ | Coincide 1 o mas del elemento precedente. |
? | Coincide 0 o 1 del elemento precedente. |
{ n} | Coincide exactamente n ocurrencias del elemento precedente. |
{ n,} | Coincide n o mas ocurrencias. |
{ n, m} | Coincide entre n y m ocurrencias. |
Clases de caracteres
[ abc] | Coincide cualquiera de a, b o c. |
[^ abc] | Coincide cualquier caracter, escepto abc. |
[ a-z] | Coincide cualquier caracter de a hasta z. |
[ 0-9] | Coincide cualquier dígito de 0 hasta 9. |
Grupos y Rangos
( …) | Captura un conjunto |
(?: …) | No captura un conjunto |
| | Captura la expresión antes o después del caño | |
Escapar expresión Regular
\ | anula el significado (“escapa”) un caracter o metacaracter RegEx. |
Ejemplos de búsquedas con RegEx de Caracteres
\d{2}-\d{4}-\d{4} | Coincide un número telefónico del formato (12)-3456-7890 |
\w+@\w+\.\w+ | Coincide una dirección de correo electrónico. |
Ejemplos de Búsquedas con RegEx de cadenas
. | Cualquier carácter excepto Nueva Línea |
^$ | Busca líneas vacías (realmente caracteres ASCII de “nueva línea”) |
/cadena/ | Busca la cadena cadena |
[cadena] | Busca coincidencias de cualquier caracter contenido en cadena |
[^cadena] | Busca coincidencias de cualquier caracter no contenido en cadena |
g/cadena/ | Busca globalmente cadena en el documento |
g/cadena1/s//cadena2/ | Sustituye globalmente cadena1 por cadena2 |
alternativa1|alternativa2 | Busca coincidencias entre alternativa1 y alternativa2 |
() | Altera el orden de la expresión regular |