Python регуляр ифодаларда finditer усули
finditer усули
сатрдаги регуляр ифодага мос келувчи
барча топилмаларнинг итераторини олиш учун
мос келади. Усулнинг биринчи параметрида
излайдиган регуляр ифодани кўрсатамиз,
иккинчи параметрда - изланадиган сатрни
кўрсатамиз. Усул барча мосликларни текшириб,
уларни чапдан ўнгга караб излайди. Усул
мослик объектларининг итераторини кайтаради.
finditer усулининг синтаксиси
куйидагича:
re.finditer(нима излаш, каерда излаш)
Келинг, бизнинг сатримиздаги рақамли боғинлариннг барчасини топайлик:
txt = 'aaaa 123 bbbb 456'
print(re.finditer('\d+', txt))
Кодни ишга тушириш натижаси:
<callable_iterator object at 0x000002AA891300A0>
Энди esa res ўзгарувчисини эълон килайлик,
унинг қиймати олдинги мисолда олган объектимиз
бўлсин. Сўнгра уни сикл билан айлантириб чиқайлик:
txt = 'aaaa 123 bbbb 456'
res = re.finditer('\d+', txt)
for el in res:
print(el)
Кодни ишга туширгандан сўнг иккита match-объект чиқади:
<re.Match object; span=(5, 8), match='123'>
<re.Match object; span=(14, 17), match='456'>
Бу объектлар регуляр ифодага мос келувчи барча топилмалар ҳақида маълумотни кортеж шаклида ўз ичига олади. Улардан индекс бўйича мосликларни чиқариш мумкин:
for el in res:
print(el[0])
Кодни ишга тушириш натижаси:
'123'
'456'
Берилган сатр:
txt = '12 aaa 34 bbb 56 ccc'
Ундан сикл ёрдамида барча рақамларни чиқаринг.