Visión General
En este blog veremos una introducción a regex en python. Es importante al utilizar regex saber manipular strings y utilizar el modulo re, a continuación mostrare ejemplos básicos.
Syntax Requerida
- strings
para este ejercicio recorreremos un string para aplicar regex más fácilmente vamos despedazar un string en substrings, esto lo logramos con el metodo split
.split(separator,maxsplit)
sus parámetros opcionales son separator y maxsplit
separator: sirve para indicar en que carácter del string se va a hacer la separacion del string, por defecto es un espacio en blanco
maxsplit: es el número máximo de veces que se separara la string
Ejemplo:
example_string = "Hello World"
print(example_string.split())
output:
>> ["Hello","World"]
- modulo re
El modulo re es usado principalmente para generar expresiones regulares o regex para su previo uso.
regex: son usados para "filtrar" substrings específicos de textos, estan compuestos de caracteres y metacaracteres.
caracteres: hacen match consigo mismo.
ejemplo: todas los caracteres conocidos incluso los especiales.
metacaracteres: son propios de regex hacen match a caracteres específicos o números
ejemplo: \d \D \w \W \s \S ^ $ [] . |
cuantificadores: indican cuantas veces aparece o no un caracter o metacaracter
ejemplo: ? {} + *
Ejemplo 1
Queremos extraer los substrings que contengan un numero.
import re
example_string = "4abc a solo $100"
pattern = re.compile(r'\$?\d{1,3}')
for numero in example_string.split():
if pattern.match(numero):
print(numero)
output:
>> 4abc
>> $100
Explicación
- primero importamos el módulo .
- teniendo example_string queremos extraer los substrings que contengan un número.
- Aqui generamos el patron o "pattern", tenemos dos numeros el primero empieza con un signo de dolor "$" como es un metacaracter lo escapamos con un backslash, pero como el otro número no tiene agregamos el cuantificador "?" que indica que el carácter a la izquierda puede aparecer cero o una vez, luego ponemos el metacaracter \d que indica que hay un dígito de 0 a 9 y con el cuantificador "{}" indicamos que el numero aparece 1 a 3 veces, lo cual esta bien ya que tenemos el 4 de 1 dígito y el 100 de 3 dígitos.
- recorremos el string, con un bucle for, dividiéndolo en una lista de substrings con split()
- vemos si hace match el patron con el substring en numero, "filtramos" el string
- finalmente imprimimos el numero
Ejemplo 2
Tenemos un texto del que queremos extraer hashtags.
import re
my_string = "esta es mi canción #favorita de toda la vida #4ever"
hashtags = []
for hashtag in my_string.split():
if re.match(r'\#4?[a-z]',hashtag):
hashtags.append(hashtag)
print(hashtags)
output:
>> ["#favorita","#4ever"]
Explicación
- primero importamos el módulo
- teniendo my_string queremos extraer los hashtags
- creamos una lista de hashtags para contener los hashtags filtrados
- recorremos el string, con un bucle for, dividiéndolo en una lista de substrings con split()
- vemos si hace match el patron, esta vez para variar lo generamos en el mismo método, con cada substring. En el patron generado primero escapamos el hashtag, luego ponemos un 4 con el cuantificador "?" ya que un hashtag tiene 1 cuatro y el otro tiene 0 cuatros y ponemos un rango con "[]", un rango sirve para indicar un rango de caracteres, indicamos de la a-z en minúsculas, ya que los hashtags son en minúsculas, asi abarcamos todo el hashtag.
- agregamos a la lista de hashtags los substring que sean hashtags
- finalmente imprimimos la lista de hashtags.
Top comments (0)