El documento define expresiones regulares y describe sus características fundamentales. Las expresiones regulares son patrones que representan conjuntos de caracteres y se usan para buscar coincidencias en cadenas. Incluyen caracteres literales y metacaracteres con significados especiales como ".", "*", "+" y "|" que representan repetición y alternativas. Las expresiones regulares se usan comúnmente en programación para buscar y validar cadenas de caracteres.
Expresiones regulares: guía completa de metacaracteres y operaciones
1. EXPRESIONES REGULARES
DEFINICIÓN
Las expresiones regulares fueron introducidas por Kleene y son una notación alternativa
a las gramáticas lineales a la derecha para escribir lenguajes regulares. La razón de
estudiar esta notación viene dada por su adecuación a la construcción de analizadores
lexicográficos.
Las expresiones regulares son una serie de caracteres que forman un patrón,
normalmente representativo de otro grupo de carácteres mayor, de tal forma que
podemos comparar el patrón con otro conjunto de caracteres para ver las coincidencias.
Las expresiones regulares están disponibles en casi cualquier lenguaje de programación,
pero aunque su sintaxis es relativamente uniforme, cada lenguaje usa su propio dialecto.
Una expresión regular puede contener caracteres del alfabeto, pero dichos caracteres
tiene un significado diferente: en toda expresión regular, cada uno de los símbolos
indican patrones. Una expresión regular r puede contener caracteres que tiene
significados especiales, A esta clase de caracteres se les llaman metacaracteres o
metasímbolos.
METACARACTERES
Algunos caracteres en una expresión regular tienen un comportamiento específico. A
estos caracteres se los conoce como "metacaracteres".
2. DESCRIPCION DE ALGUNOS METACARACTERES DESTACADOS
• El punto "."
El punto se interpreta por el motor de búsqueda como "cualquier carácter", es decir,
busca cualquier carácter SIN incluir los saltos de línea.
Aunque el punto es muy útil para encontrar caracteres que no conocemos, es necesario
recordar que corresponde a cualquier carácter y que muchas veces esto no es lo que se
requiere. Es muy diferente buscar cualquier carácter que buscar cualquier carácter
alfanumérico o cualquier dígito o cualquier no-dígito o cualquier no-alfanumérico. Se
debe tomar esto en cuenta antes de utilizar el punto y obtener resultados no deseados.
• La barra inversa o contrabarra ""
Se utiliza para "marcar" el siguiente carácter de la expresión de búsqueda de forma que
este adquiera un significado especial o deje de tenerlo. O sea, la barra inversa no se
utiliza nunca por sí sola, sino en combinación con otros caracteres. Al utilizarlo por
ejemplo en combinación con el punto "." este deja de tener su significado normal y se
comporta como un carácter literal.
De la misma forma, cuando se coloca la barra inversa seguida de cualquiera de los
caracteres especiales que discutiremos a continuación, estos dejan de tener su
significado especial y se convierten en caracteres de búsqueda literal.
• Los corchetes "[ ]"
3. La función de los corchetes en el lenguaje de las expresiones regulares es representar
"clases de caracteres", o sea, agrupar caracteres en grupos o clases. Son útiles cuando es
necesario buscar uno de un grupo de caracteres. Dentro de los corchetes es posible
utilizar el guion "-" para especificar rangos de caracteres. Adicionalmente, los
metacaracteres pierden su significado y se convierten en literales cuando se encuentran
dentro de los corchetes.
• La barra "|"
Sirve para indicar una de varias opciones.
• El asterisco "*"
El asterisco sirve para encontrar algo que se encuentra repetido 0 o más veces.
• El signo de suma "+"
Se utiliza para encontrar una cadena que se encuentre repetida una o más veces
EXPRESIONES REGULARES EN LA PROGRAMACIÓN
En el área de la programación las expresiones regulares son un método por medio del
cual se pueden realizar búsquedas dentro de cadenas de caracteres. Sin importar si la
búsqueda requerida es de dos caracteres en una cadena de 10 o si es necesario encontrar
todas las apariciones de un patrón definido de caracteres en un archivo de millones de
caracteres, las expresiones regulares proporcionan una solución para el problema.
Adicionalmente, un uso derivado de la búsqueda de patrones es la validación de un
formato específico en una cadena de caracteres dada, como por ejemplo fechas o
identificadores. Para poder utilizar las expresiones regulares al programar es necesario
tener acceso a un motor de búsqueda con la capacidad de utilizarlas. Es posible
clasificar los motores disponibles en dos tipos: Motores para el programador y Motores
para el usuario final.
Cada Expresión regular denota un lenguaje .Para definir las expresiones regulares sobre
un vocabulario V, se utilizan las siguientes reglas:
1. £ es una E.R. que denota {£} (el lenguaje compuesto únicamente por la cadena
vacía).
2. Para cada a perteneciente a V, a es la E.R, que denota {a} (el lenguaje cuya única
cadena es a).
3. S¡ p y q son dos E.R. que denotan los lenguajes P y Q. respectivamente, entonces:
a
) (p) | (q) es una E-R que denota P U Q.
b) (p). (q|) es una E'R que denota P.Q.
c) (p)* es una E.R. que denota P*.
4. Cuando no se usan paréntesis, para evaluar una E.R. hay que tener en cuenta las
siguientes reglas de precedencia (de mayor a menor): “*” “’” “|”.
Algunos ejemplos para ilustrar:
1. La E.R. a* denota el lenguaje que contiene cadenas con cera o más símbolos
«a».
2. a (a)* denota el lenguaje que contiene uno o más símbolos «a». También se
puede Usar para denotar este lenguaje la notación a+ .
3. La E.R. (a | b)* denota el lenguaje que contiene todas las cadenas que se pueden
formar con «a» y «b», incluida la cadena vacía.
4. La E.R. {a | b}* abb denota el conjunto de todas las cadenas compuestas por
símbolos «a» y «b» y terminando siempre con abb.
5. La E.R. (a | b)(a | b) denota todas las cadenas de longitud dos, mientras que
la E.R. ((a | b)(a | b))* denota todas las de longitud par.
6. La E.R. (a | b)(a | b)(a | b) denota las cadenas de longitud tres y (a | b)(a | b)(a | b)
+ denota las cadenas de longitud tres o más.
7. La E.R. (a | b)(a | b)(a | b) + | a | b denota las cadenas que no tienen longitud
conocida
OPERACIONES CON EXPRESIONES REGULARES
Existen tres operaciones básicas en las expresiones regulares
1) Selección entre alternativas, la cual se indica mediante el metacaracter | (barra
vertical)
2) Concatenación, que se indica mediante yuxtaposición (sin un metacaracter)
3) Repetición o "cerradura", la cual se indica mediante el metacarácter *.
Analizaremos cadauna por turno proporcionando la construcción del
conjunto correspondiente para loslenguajes de cadenas concordantes