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.
Una
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
Expresiones regulares

t
— Representa un tabulador.

r
— Representa el "retorno de carro" o "regreso al
inicio" o sea el lugar en que la línea vuelve a iniciar.
n
— Representa la "nueva línea" el carácter por medio del
cual una línea da inicio.
f
— Representa un salto de página
v
— Representa un tabulador vertical
x
— 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".
u
— 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.
d
— Representa un dígito del 0 al 9.
w
— Representa cualquier carácter alfanumérico
(a-z,
A-Z,
0-9
o guión bajo)
.
s
— Representa un espacio en blanco.
D
— Representa cualquier carácter que no sea un dígito del 0 al 9.
W

Representa cualquier carácter no alfanumérico.
S
— Representa cualquier carácter que no sea un espacio en blanco.
A
— Representa el inicio de la cadena. No un carácter sino una
posición.
Z
— Representa el final de la cadena. No un carácter sino una
posición.
b
— Marca el inicio y el final de una palabra.
B
— Marca la posición entre dos caracteres alfanuméricos o dos
no-alfanuméricos.
Alternación
Una
barra vertical separa las alternativas. Por ejemplo,
"marrón|castaño"
se corresponde con marrón o castaño.
Cuantificación
Un
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.
Agrupación
Los
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.
Los
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.
La
barra "
|"
- Sirve para indicar una de varias opciones. Por ejemplo, la
expresión regular "a|e" encontrará cualquier "a"
o "e" dentro del texto.
El
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.
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.
Módulo
re
Python
nos ofrece el módulo
re
que cuenta con funciones para trabajar con expresiones regulares y
cadenas.
Solo
hace falta importar ese módulo de esta manera:
1
import
re
La
función match()
Dentro
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.
Ahora
vamos a validar una expresión regular con una cadena, la cadena debe
ser cualquier carácter alfanumérico.
Función match
Función match

Ejemplo
de cadenas aceptables:

Hola
Mundo
67
Ejemplo
de cadena rechazada
-Hola
[45]
import
re;
#Se
importa
el modulo
cadena
= input(
"Ingrese
la
cadena:n") #Ingresamos
una
cadena
patron
= (
"w+$") #Esta
es
una
expresión
regular
que
nos
va
a
permitir
validar
la
cadena
if
(re.match(patron,cadena)):
#La
función
re.match
recibe
2
parámetros
un
patrón a
validar
y
una
cadena
    
print
(
"Cadena
valida
:)"
)
else:
    
print
(
"Cadena
no
valida
:("
)
Ejemplo de cadena valida
Ejemplo de cadena valida
Ejemplo de cadena no valida
Ejemplo de cadena no valida
A simple vista, las expresiones regulares no parecen tener un gran uso, pero la realidad es que son
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.
Python
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
En
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
Pero
con interfaz gráfica… en nuestro lenguaje preferido Python.
Expresiones regulares
Expresiones regulares

Autor: Heder Ithamar Romero
Seguir: Google +
  1. Unknown dice:

    Estoy aprendiendo a programar en Python por mi cuenta y el artículo me ha parecido muy interesante y esclarecedor.
    Enhorabuena y seguid así.

    1. PythonDiario dice:

      Hola Vicente. Gracias por visitar el blog. Seguiremos agregando más artículos sobre las expresiones regulares. Saludos

  2. odic3o dice:

    Saludos excelente blog, desde Venezuela

    1. PythonDiario dice:

      Hola y gracias por visitar el blog!!! Saludos

  3. The Master dice:

    Excelente Blog, el articulo muy interesante y me ha sido de gran ayuda. Saludos desde Venezuela

    1. PythonDiario dice:

      Gracias The Master, muchas gracias por visitar el blog y acá estamos para compartir y ayudar!!! Saludos

    2. Never LR dice:

      Amigo, buen aporte, tienes algun link para descargarlo, es que necesito hacer algo si, te agradeceria mucho si me ayudas.

    3. PythonDiario dice:

      Hola, gracias por visitar el blog, acá te dejo el enlace del otro artículo con el código: Expresiones regulares en Python

  4. Never LR dice:

    Donde descargo el programa ya terminado?

  5. Anónimo dice:

    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

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Te has suscrito correctamente al boletín

Se produjo un error al intentar enviar tu solicitud. Inténtalo de nuevo.

Mi Diario Python will use the information you provide on this form to be in touch with you and to provide updates and marketing.