Introduccion a las expresiones regulares en python
Python
nos permite trabajar con expresiones regulares pero para ello debemos
tener antes conocimientos previos acerca de las expresiones regulares
o de cómo crear una, en ambas versiones de Python se puede trabajar
con expresiones regulares tanto en la versión 2 y 3.
expresión regular, a menudo llamada también regex,
es una secuencia de caracteres que forma un patrón de búsqueda,
principalmente utilizada para la búsqueda de patrones de cadenas de
caracteres u operaciones de sustituciones.
Expresiones regulares |
t
— Representa un tabulador.
— Representa el "retorno de carro" o "regreso al
inicio" o sea el lugar en que la línea vuelve a iniciar.
— Representa la "nueva línea" el carácter por medio del
cual una línea da inicio.
— Representa un salto de página
— Representa un tabulador vertical
— Se utiliza para representar caracteres ASCII o ANSI si conoce su
código. De esta forma, si se busca el símbolo de derechos de autor
y la fuente en la que se busca utiliza el conjunto de caracteres
Latin-1 es posible encontrarlo utilizando "xA9".
— Se utiliza para representar caracteres Unicode si se conoce su
código. "u00A2" representa el símbolo de centavos. No
todos los motores de Expresiones Regulares soportan Unicode.
— Representa un dígito del 0 al 9.
— Representa cualquier carácter alfanumérico (a-z,
A-Z,
0-9
o guión bajo).
— Representa un espacio en blanco.
— Representa cualquier carácter que no sea un dígito del 0 al 9.
—
Representa cualquier carácter no alfanumérico.
— Representa cualquier carácter que no sea un espacio en blanco.
— Representa el inicio de la cadena. No un carácter sino una
posición.
— Representa el final de la cadena. No un carácter sino una
posición.
— Marca el inicio y el final de una palabra.
— Marca la posición entre dos caracteres alfanuméricos o dos
no-alfanuméricos.
barra vertical separa las alternativas. Por ejemplo,
se corresponde con marrón o castaño.
cuantificador tras un carácter especifica la frecuencia con la que
éste puede ocurrir. Los cuantificadores más comunes son +,
?
y *:
-
El signo más indica que el carácter que le precede debe aparecer al
menos una vez. Por ejemplo, "ho+la" describe el conjunto
infinito hola, hoola, hooola, hoooola, etcétera.
-
El signo de interrogación indica que el carácter que le precede
puede aparecer como mucho una vez. Por ejemplo, "ob?scuro"
se corresponde con oscuro y obscuro.
- El asterisco indica que el carácter que le precede puede aparecer
cero, una, o más veces. Por ejemplo, "0*42" se corresponde
con 42, 042, 0042, 00042, etcétera.
paréntesis pueden usarse para definir el ámbito y precedencia de
los demás operadores. Por ejemplo, "(p|m)adre" es lo mismo
que "padre|madre", y "(des)?amor" se corresponde
con amor y con desamor.
corchetes "[
]"
- 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.
barra "|"
- Sirve para indicar una de varias opciones. Por ejemplo, la
expresión regular "a|e" encontrará cualquier "a"
o "e" dentro del texto.
signo de dólar "$"
- Representa el final de la cadena de caracteres o el final de la
línea, si se utiliza el modo multi-línea. No representa un carácter
en especial sino una posición.
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.
re
nos ofrece el módulo re
que cuenta con funciones para trabajar con expresiones regulares y
cadenas.
hace falta importar ese módulo de esta manera:
1
|
import
re |
función match()
de las muchas funciones que nos ofrece el modulo re
nos encontramos con esta función match,
que
comprueba si una cadena es equivalente a una expresión regular.
vamos a validar una expresión regular con una cadena, la cadena debe
ser cualquier carácter alfanumérico.
Función match |
Ejemplo
de cadenas aceptables:
de cadena rechazada
re; #Se
importa
el modulo
= input("Ingrese
la
cadena:n") #Ingresamos
una
cadena
= ("w+$") #Esta
es
una
expresión
regular que
nos
va
a permitir
validar
la
cadena
(re.match(patron,cadena)): #La
función
re.match recibe
2 parámetros
un
patrón a validar
y una
cadena
("Cadena
valida
:)")
("Cadena
no valida
:(")
Ejemplo de cadena valida |
Ejemplo de cadena no valida |
muy útiles a la hora de validar cadenas, te has preguntado cómo es
que se validan los correos electrónicos en un página web y si
ingresas un correo no valido como por arte de magia te avisa que es
incorrecto, pues son las expresiones regulares la que permiten hacer
esas funciones.
nos ofrece muchas funciones del módulo re, de las más usadas
encontramos a re.split() y re.search() entre otras…ya llegara el
tiempo de hablar de ellas, si te interesa un poco más la
documentación de expresiones regulares la podrás encontrar en la
página oficial de Python: https://docs.python.org/2/library/re.html
el siguiente artículo me adentrare más en las expresiones regulares pero
con un poco más de cache validaremos:
-
Un
correo electrónico -
Un
identificador de java -
Un
identificador de php -
La
fecha -
Un
número real -
Un
entero -
Una
dirección -
Un
teléfono -
Un
nombre
con interfaz gráfica… en nuestro lenguaje preferido Python.
Expresiones regulares |
-
-
Hola Vicente. Gracias por visitar el blog. Seguiremos agregando más artículos sobre las expresiones regulares. Saludos
-
-
Saludos excelente blog, desde Venezuela
-
Hola y gracias por visitar el blog!!! Saludos
-
-
Excelente Blog, el articulo muy interesante y me ha sido de gran ayuda. Saludos desde Venezuela
-
Gracias The Master, muchas gracias por visitar el blog y acá estamos para compartir y ayudar!!! Saludos
-
Amigo, buen aporte, tienes algun link para descargarlo, es que necesito hacer algo si, te agradeceria mucho si me ayudas.
-
Hola, gracias por visitar el blog, acá te dejo el enlace del otro artículo con el código: Expresiones regulares en Python
-
-
Donde descargo el programa ya terminado?
-
hola, la verdad el blog me ha parecido muy interesante, pero tengo una duda, como ejemplo pondré la cadena 1012324 y dentro de esa cadena quisiera encontrar todos los números alternados es decir "1d1" o "2d2" y así, he intentado "1d1|2d2|3d3|..." y funciona, pero con cadenas como por ejemplo 1212 solo me detecta "121" pero no me detecta "212" dando a entender que el 2 no esta alternado cuando si lo esta, quisiera saber si hay alguna solución.
Deja una respuesta
Estoy aprendiendo a programar en Python por mi cuenta y el artículo me ha parecido muy interesante y esclarecedor.
Enhorabuena y seguid así.