Método Python re.finditer()
re.finditer()es Pythonreen el módulo utilizado parabuscar iterativamente todas las coincidenciasla función.
Devuelve un iterador, cada elemento es un objeto match, lo que permite procesar los resultados de coincidencia uno por uno.
Definición de la palabra: find iterSignifica 'iterador de búsqueda'.
Sintaxis básica y parámetros
Formato de sintaxis
re.finditer(pattern, string, flags=0)
Descripción de parámetros
- pattern: patrón de expresión regular
- string: la cadena a buscar
- flags: opcional, banderas de expresión regular
Descripción de la función
- Valor de retorno: devuelve un iterador (iterator), cada elemento es un objeto match.
- Características: adecuado para manejar una gran cantidad de resultados de coincidencia, ahorra memoria.
Ejemplos
Ejemplo 1: Uso básico
Ejemplo
import re
text = 3 manzanas, 5 naranjas, 8 plátanos
# Buscar iterativamente todos los números
for match in re.finditer(r'\d+', text):
print(fEncontrado: {match.group()} Posición: {match.start()}-{match.end()})
text = 3 manzanas, 5 naranjas, 8 plátanos
# Buscar iterativamente todos los números
for match in re.finditer(r'\d+', text):
print(fEncontrado: {match.group()} Posición: {match.start()}-{match.end()})
Resultado esperado:
找到: 3 位置: 0-1 找到: 5 位置: 4-5 找到: 8 位置: 8-9
Ejemplo 2: Procesar lista de correos electrónicos
Ejemplo
import re
text = Contacta con [email protected] o [email protected] para obtener ayuda
# Buscar y procesar cada correo electrónico
for match in re.finditer(r'(\w+)@(\w+\.\w+)', text):
print(fCompleto: {match.group()})
print(fUsuario: {match.group(1)})
print(fDominio: {match.group(2)})
print(fPosición: {match.start()}-{match.end()})
text = Contacta con [email protected] o [email protected] para obtener ayuda
# Buscar y procesar cada correo electrónico
for match in re.finditer(r'(\w+)@(\w+\.\w+)', text):
print(fCompleto: {match.group()})
print(fUsuario: {match.group(1)})
print(fDominio: {match.group(2)})
print(fPosición: {match.start()}-{match.end()})
Resultado esperado:
完整: [email protected] 用户名: test 域名: example.com 位置: 2-16 完整: [email protected] 用户名: admin 域名: test.org 位置: 17-30
Ejemplo 3: Comparación con re.findall()
Ejemplo
import re
text = "a1b2c3d4"
# findall devuelve una lista de cadenas
print("findall:", re.findall(r'\d', text))
# finditer devuelve un iterador
print("finditer:", [m.group() for m in re.finditer(r'\d', text)])
text = "a1b2c3d4"
# findall devuelve una lista de cadenas
print("findall:", re.findall(r'\d', text))
# finditer devuelve un iterador
print("finditer:", [m.group() for m in re.finditer(r'\d', text)])
Resultado esperado:
findall: ['1', '2', '3', '4'] finditer: ['1', '2', '3', '4']
Otras extensiones
Módulo re de Python