Belgilar takrorlash operatorlari
Vaziyatlar bo'ladi, qachonki belgining
ma'lum bir sonda takrorlanishini ko'rsatish
kerak bo'ladi. Agar aniq takrorlar soni noma'lum
bo'lsa, unda uni bir necha marta yozish
mumkin - 'aaaa'. Lekin agar shunday
deyish kerak bo'lsa: bir yoki bir necha marta takrorla nima qilish kerak?
Buning uchun takrorlash operatorlari
(kvantifikatorlar) mavjud: plus + (bir yoki bir necha
marta), yulduzcha * (nol yoki bir necha
marta) va savol ? (nol yoki bir marta).
Ushbu operatorlar o'zlarining oldida turgan
belgiga ta'sir qiladi.
Keling, ushbu operatorlarning ishlashini misollar orqali ko'rib chiqaylik.
Misol
'x' harfi, 'a' harfi bir yoki bir necha
marta, 'x' harfi andozasiga mos keladigan barcha pastki satrlarni topamiz:
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa+x', '!', txt)
print(res)
Kodni bajarish natijasi:
'xx ! ! ! xbx'
Misol
'x' harfi, 'a' harfi nol yoki bir necha
marta, 'x' harfi andozasiga mos keladigan barcha pastki satrlarni topamiz:
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa*x', '!', txt)
print(res)
Kodni bajarish natijasi:
'! ! ! ! xbx'
Misol
'x' harfi, 'a' harfi nol yoki bir
marta, 'x' harfi andozasiga mos keladigan barcha pastki satrlarni topamiz:
txt = 'xx xax xaax xbx'
res = re.sub('xa?x', '!', txt)
print(res)
Kodni bajarish natijasi:
'! ! xaax xbx'
Amaliy vazifalar
Satr berilgan:
txt = 'aa aba abba abbba abca abea'
'aba', 'abba', 'abbba'
satrlarini topadigan regex yozing
andozaga mos ravishda: 'a' harfi,
'b' harfi istalgan sonda, 'a' harfi.
Satr berilgan:
txt = 'aa aba abba abbba abca abea'
'aa', 'aba', 'abba',
'abbba' satrlarini topadigan regex yozing
andozaga mos ravishda: 'a' harfi,
'b' harfi istalgan sonda (hatto bir marta ham bo'lmaganda), 'a' harfi.
Satr berilgan:
txt = 'aa aba abba abbba abca abea'
'aa', 'aba' satrlarini topadigan regex yozing
andozaga mos ravishda: 'a' harfi,
'b' harfi bir marta yoki bir marta ham bo'lmaganda, 'a' harfi.
Satr berilgan:
txt = 'aa aba abba abbba abca abea'
'aa', 'aba', 'abba',
'abbba' satrlarini topadigan, 'abca'
va 'abea' ni olmaydigan regex yozing.