Metoda finditer modula re
Metoda finditer modula re
vrne iterator vseh ujemanj z regularnim izrazom
v nizu. V prvem parametru metode podamo
regularni izraz. V drugem parametru nastavimo
niz, v katerem iščemo regularni izraz. V tretjem
opcijskem parametru lahko nastavimo zastavice.
Metoda preveri vsa ujemanja, jih išče
od leve proti desni.
Sintaksa
import re
re.finditer(regularni_izraz, niz, [zastavice])
Primer
Poiščimo vse podnize s številkami v našem nizu:
txt = 'aaaa 123 bbbb 456'
res = re.finditer('\d+', txt)
print(res)
Rezultat izvajanja kode:
<callable_iterator object at 0x000002AA891300A0>
Primer
In sedaj deklarirajmo spremenljivko res,
katere vrednost bo objekt, ki smo ga prejeli
v prejšnjem primeru. Nato ga ponovimo z
zanko:
txt = 'aaaa 123 bbbb 456'
res = re.finditer('\d+', txt)
for el in res:
print(el)
Po izvedbi kode dobimo dva objekta Match object:
<re.Match object; span=(5, 8), match='123'>
<re.Match object; span=(14, 17), match='456'>
Ti objekti vsebujejo informacije o vseh ujemanjih z regularnim izrazom v obliki terke. Iz njih lahko izpišemo ujemanja po indeksu:
for el in res:
print(el[0])
Rezultat izvajanja kode:
'123'
'456'
Primer
Za večjo nazornost uporabimo pri iskanju ujemanj zajemalne skupine. In pri ponavljanju objektov z zanko izpišimo prvo ujemanje (štelo bo kot ničta zajemalna skupina), in tudi njegove elemente, prav tako razporejene po zajemalnih skupinah:
txt = 'aaaa 123 bbbb 456'
res = re.finditer('(\d)(\d)', txt)
for el in res:
print(el[0], el[1], el[2])
Po izvedbi kode dobimo ničlo zajemalno skupino, t.j. celoten podniz, in tudi prvi in drugi znak iz tega podniza:
'12' '1' '2'
'45' '4' '5'
Glejte tudi
-
metoda
findallmodulare,
ki vrne seznam vseh ujemanj v nizu -
metoda
searchmodulare,
ki išče prvo ujemanje z regularnim izrazom v nizu -
metoda
matchmodulare,
ki išče ujemanje z regularnim izrazom na začetku niza -
metoda
fullmatchmodulare,
ki išče vsa ujemanja z regularnim izrazom v nizu -
objekt
Match objectmodulare,
ki vsebuje informacije o ujemanjih z regularnim izrazom -
metoda
splitmodulare,
ki razdeli niz na seznam glede na določen ločilo