Python Regulyar Ifodalarida 'yoki' Buyrug'i
'|' buyrug'i
[ ] buyrug'iga nisbatan 'yoki' ning
kuchliroq variantini ifodalaydi. Ushbu buyruq
regulyarni bir nechta qismlarga bo'lish imkonini beradi.
Bunda izlanayotgan narsa
ham regulyaning bir qismiga, ham
boshqasiga to'g'ri kelishi mumkin. Keling, misollar orqali ko'rib chiqaylik.
Misol
Ushbu misolda qidiruv shabloni quyidagicha:
uchta 'a' harfi
yoki uchta 'b' harfi:
txt = 'aaa bbb abb'
res = re.sub('a{3}|b{3}', '!', txt)
print(res)
Kodni bajarish natijasi:
'! ! abb'
Misol
Ushbu misolda qidiruv shabloni quyidagicha:
uchta 'a' harfi
yoki 1 va undan ortiq
'b' harfi:
txt = 'aaa bbb bbbb bbbbb axx'
res = re.sub('a{3}|b+', '!', txt)
print(res)
Kodni bajarish natijasi:
'! ! ! ! axx'
Misol
Ushbu misolda qidiruv shabloni quyidagicha: bitta yoki undan ortiq harf yoki uchta raqam:
txt = 'a ab abc 1 12 123'
res = re.sub('[a-z]+|\d{3}', '!', txt)
print(res)
Kodni bajarish natijasi:
'! ! ! 1 12 !'
Misol
Vertikal chiziq regulyani ikkiga emas, balki istalgan sonli qismlarga bo'lishi mumkin:
txt = 'aaa bbb ccc ddd'
res = re.sub('a+|b+|c+', '!', txt)
print(res)
Kodni bajarish natijasi:
'! ! ! ddd'
Misol
Agar vertikal chiziq yumaloq qavs
ichida turgan bo'lsa, 'yoki' faqat
o'sha qavslar ichida ishlaydi.
Misol uchun, quyidagi shablon bo'yicha satrlarni topamiz:
boshida 'a', yoki
'b' bitta yoki undan ortiq marta
turgan, keyin esa ikkita 'x' harfi turgan:
txt = 'axx bxx bbxx exx'
res = re.sub('(a|b+)xx', '!', txt)
print(res)
Kodni bajarish natijasi:
'! ! ! exx'
Amaliy vazifalar
Berilgan satr:
txt = 'aeeea aeea aea axa axxa axxxa'
Quyidagi shablon bo'yicha satrlarni topadigan regulyar ifodani yozing:
chetlarida 'a' harflari
turgan, ular orasida esa - 'e' harfi
istalgan soncha marta yoki 'x' harfi
istalgan soncha marta turgan.
Berilgan satr:
txt = 'aeeea aeea aea axa axxa axxxa'
Quyidagi shablon bo'yicha satrlarni topadigan regulyar ifodani yozing:
chetlarida 'a' harflari
turgan, ular orasida esa - 'e' harfi
ikki marta yoki 'x' harfi
istalgan soncha marta turgan.