Python регуляр ифодаларда finditer усули

finditer усули сатрдаги регуляр ифодага мос келувчи барча топилмаларнинг итераторини олиш учун мос келади. Усулнинг биринчи параметрида излайдиган регуляр ифодани кўрсатамиз, иккинчи параметрда - изланадиган сатрни кўрсатамиз. Усул барча мосликларни текшириб, уларни чапдан ўнгга караб излайди. Усул мослик объектларининг итераторини кайтаради. finditer усулининг синтаксиси куйидагича:

pythonre.finditer(нима излаш, каерда излаш)

Келинг, бизнинг сатримиздаги рақамли боғинлариннг барчасини топайлик:

pythontxt = 'aaaa 123 bbbb 456'
print(re.finditer('\d+', txt))

Кодни ишга тушириш натижаси:

python<callable_iterator object at 0x000002AA891300A0>

Энди esa res ўзгарувчисини эълон килайлик, унинг қиймати олдинги мисолда олган объектимиз бўлсин. Сўнгра уни сикл билан айлантириб чиқайлик:

pythontxt = 'aaaa 123 bbbb 456'
res = re.finditer('\d+', txt)

for el in res:
  print(el)

Кодни ишга туширгандан сўнг иккита match-объект чиқади:

python<re.Match object; span=(5, 8), match='123'>
<re.Match object; span=(14, 17), match='456'>

Бу объектлар регуляр ифодага мос келувчи барча топилмалар ҳақида маълумотни кортеж шаклида ўз ичига олади. Улардан индекс бўйича мосликларни чиқариш мумкин:

pythonfor el in res:
  print(el[0])

Кодни ишга тушириш натижаси:

python'123'
'456'
Задание 1

Берилган сатр:

pythontxt = '12 aaa 34 bbb 56 ccc'

Ундан сикл ёрдамида барча рақамларни чиқаринг.