Expresiones regulares
Las Expresiones Regulares, o RegEx, son
patrones que podemos usar para encontrar una determinada combinacion 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 programacion mas conocidos soportan RegEx: C, Ruby,
XML, Visual Basic, Unix Shell, Java, JavaScript, Python y, por supuesto,
Perl.
Existen dos tipos de RegEx en el estandar POSIX: Expresiones
Regulares Basicas (BRE) y Expresiones Regulares Extendidas
(ERE). Luego estan las PCRE (Expresiones Regulares Compatibles con Perl,
escritas en Lenguaje C e inspiradas en Perl.
Las RegEx fueron definidas en la decada del 1950 y tienen su origen en
Regular Events, una notacion creada por Stephen C. Kleene, matematico
estadounidense. No debemos confundir las RegEx con los comodines
de Shell, ya que estos ultimos operan unicamente con los nombres
de archivos.
Armado de Expresiones Regulares
Las expresiones regulares estan compuestas por
- Caracteres ordinarios como
espacio en blanco
,
_
, A-Z
, a-z
,
0-9
.
- Metacaracteres de RegEx, son abreviaciones cuyo significado
se expande para significar caracteres ordinarios.
Metacaracter RegEx |
Significado |
* |
cero o mas iteraciones del caracter inmediato que lo precede. |
. |
cualquier caracter ordinario, excepto el ASCII de nueva linea . |
[ caracter(es) ] |
cualquiera de los caracteres especificados entre corchetes; puede usarse guion - para delimitar un rango de caracteres tal como [a-f] , [1-5] , etcetera. |
^ |
comienzo de linea en un fichero. |
$ |
final de una linea en un fichero. |
Expresiones Regulares de busqueda por coincidencia
Coincidencia de Caracteres
|
|
. |
Cualquier caracter excepto Nueva Linea |
\w |
Coincide cualquier palabra formada por caracteres (alfanumericos + _ |
\W |
Coincide cualquier no palabra formada por caracteres |
\d |
Coincide cualquier digito (0 -9 ) |
\D |
Coincide cualquier no-digito. |
\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 limite |
\B |
Coincide con un limite 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 digito de 0 hasta 9. |
Grupos y Rangos
|
|
( ...) |
Captura un conjunto |
(?: ...) |
No captura un conjunto |
| |
Captura la expresion antes o despues del cano | |
Escapar expresion Regular
|
|
\ |
anula el significado ("escapa") un caracter o metacaracter RegEx. |
Ejemplos
Ejemplos de busquedas con RegEx de Caracteres
|
|
\d{2}-\d{4}-\d{4} |
Coincide un numero telefonico del formato (12)-3456-7890 |
\w+@\w+\.\w+ |
Coincide una direccion de correo electronico. |
Ejemplos de Busquedas con RegEx de cadenas
|
|
. |
Cualquier caracter excepto Nueva Linea |
^$ |
Busca lineas vacias (realmente caracteres ASCII de "nueva linea") |
/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 expresion regular |