Método finditer en expresiones regulares de Python
El método finditer está diseñado para
obtener un iterador de todas las coincidencias
con la expresión regular en una cadena. En el primer parámetro
del método indicamos la expresión regular que
buscaremos, en el segundo parámetro - la cadena
en la que buscamos. El método verifica todas las coincidencias,
buscándolas de izquierda a derecha. El método devuelve
un iterador de objetos de coincidencia. La sintaxis
del método finditer es la siguiente:
re.finditer(qué buscar, dónde buscar)
Encontremos todas las subcadenas con dígitos en nuestra cadena:
txt = 'aaaa 123 bbbb 456'
print(re.finditer('\d+', txt))
El resultado de ejecutar el código:
<callable_iterator object at 0x000002AA891300A0>
Y ahora declaremos una variable res,
cuyo valor será el objeto que obtuvimos
en el ejemplo anterior. Luego iteremos sobre
él con un ciclo:
txt = 'aaaa 123 bbbb 456'
res = re.finditer('\d+', txt)
for el in res:
print(el)
Después de ejecutar el código, se mostrarán dos objetos de coincidencia (match objects):
<re.Match object; span=(5, 8), match='123'>
<re.Match object; span=(14, 17), match='456'>
Estos objetos contienen información sobre todas las coincidencias con la expresión regular en forma de tupla. Se pueden extraer las coincidencias por índice:
for el in res:
print(el[0])
El resultado de ejecutar el código:
'123'
'456'
Se da la siguiente cadena:
txt = '12 aaa 34 bbb 56 ccc'
Extrae todos los números de ella usando un ciclo.