Búsqueda de patrones con el método finditer en Python

Búsqueda de patrones con el método finditer en Python

En Python, el módulo re proporciona una serie de funciones y objetos para trabajar con expresiones regulares. Una de estas funciones es finditer(), que se utiliza para buscar todas las ocurrencias de una expresión regular en una cadena de texto.

La función finditer() devuelve un iterador que produce objetos MatchObject para cada coincidencia encontrada. Cada objeto MatchObject tiene una serie de atributos que proporcionan información sobre la coincidencia, como su posición inicial y final en la cadena de texto, el texto coincidente, y así sucesivamente.

Sintaxis

La sintaxis de la función finditer() es la siguiente:

Python
finditer(pattern, string, flags=0)
  • pattern: La expresión regular que se utilizará para buscar coincidencias.
  • string: La cadena de texto en la que se buscarán coincidencias.
  • flags: Opcional. Un conjunto de banderas que controlan el comportamiento de la coincidencia.

Ejemplos

Python
import re

text = "Este es un texto con números: 123, 456, 789"

# Busca todas las ocurrencias de números
for match in re.finditer(r"\d+", text):
    print(match.group())

# Salida:
# 123
# 456
# 789

# Busca todas las ocurrencias de palabras que comienzan con "la"
for match in re.finditer(r"la\w+", text):
    print(match.group())

# Salida:
# la
# la

Diferencia entre finditer() y findall()

La función finditer() es similar a la función findall(), pero con una diferencia importante: finditer() devuelve un iterador, mientras que findall() devuelve una lista.

Esto significa que finditer() es más eficiente cuando se espera que haya un gran número de coincidencias. En estos casos, finditer() evita tener que cargar todas las coincidencias en la memoria a la vez.

Conclusión

La función finditer() es una herramienta poderosa para buscar patrones en cadenas de texto. Es útil cuando se necesita procesar una gran cantidad de datos o cuando se desea iterar sobre las coincidencias una a una.