Python Regulyar Ifodalarda Belgilar To'plami
Belgilar guruhlari \d va \w unchalik
moslashuvchan emas. Barcha harflarni topish, lekin raqamlarni emas -
kabi oddiy vazifa ham ular yordamida hal qilinmaydi. Bunday vazifalar uchun
'yoki' amalini ifodalovchi kvadrat qavslardan foydalanish kerak.
Kvadrat qavslar ichida ko'rsatilgan har qanday belgini almashtiradi.
Misol uchun, shunday: x[abc]x - biz
chetdalarda x harflari turishi, ichida esa - bitta belgi: 'a',
'b' yoki 'c' bo'lishi kerakligini aytamiz.
Kvadrat qavslardan keyin takrorlash operatorlarini yozish mumkin.
Misol uchun, shunday: x[abc]+x - biz
x lar ichida 'a', 'b' va 'c' belgilarining har qanday miqdori
- har qanday kombinatsiyada bo'lishi mumkinligini aytamiz.
Faqat belgilarni sanab o'tish emas, balki
ikki belgi orasiga defis qo'yib belgilar guruhlarini yaratish mumkin.
Misol uchun, shunday: [a-d] - biz
'a' dan 'd' gacha bo'lgan barcha belgilarni olamiz.
Keling, misollar orqali ko'rib chiqaylik.
Misol
Ushbu misolda qidirish shabloni shunday ko'rinishga ega:
x lar orasida 'a' dan
'z' gacha bo'lgan har qanday harf:
Kodni bajarish natijasi:
'! ! ! x@x'
Misol
Ushbu misolda qidirish shabloni shunday ko'rinishga ega:
x lar orasida 'a' dan
'k' gacha bo'lgan har qanday harf:
txt = 'xax xbx xmx x@x'
res = re.sub('x[a-k]x', '!', txt)
print(res)
Kodni bajarish natijasi:
'! ! xmx x@x'
Misol
Ushbu misolda qidirish shabloni shunday ko'rinishga ega:
x lar orasida 'A' dan
'Z' gacha bo'lgan har qanday harf:
txt = 'xax xBx xcx x@x'
res = re.sub('x[A-Z]x', '!', txt)
print(res)
Kodni bajarish natijasi:
'xax ! xcx x@x'
Misol
Ushbu misolda qidirish shabloni shunday ko'rinishga ega:
x lar orasida 0
dan 9 gacha bo'lgan har qanday raqam:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[0-9]x', '!', txt)
print(res)
Kodni bajarish natijasi:
'xax ! ! ! x@x'
Misol
Ushbu misolda qidirish shabloni shunday ko'rinishga ega:
x lar orasida 3
dan 7 gacha bo'lgan har qanday raqam:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[3-7]x', '!', txt)
print(res)
Kodni bajarish natijasi:
'xax x1x ! ! x@x'
Misol
Ushbu misolda qidirish shabloni shunday ko'rinishga ega:
x lar orasida 'a' dan
'z' gacha bo'lgan har qanday harf yoki 1 dan
9 gacha bo'lgan raqam:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[a-z1-9]x', '!', txt)
print(res)
Kodni bajarish natijasi:
'! ! ! ! x@x'
Misol
Ushbu misolda qidirish shabloni shunday ko'rinishga ega:
x lar orasida 'a' dan
'z' gacha bo'lgan har qanday harf yoki
'A' dan 'Z' gacha bo'lgan harf:
txt = 'xax xBx xcx x5x x@x'
res = re.sub('x[a-zA-Z]x', '!', txt)
print(res)
Kodni bajarish natijasi:
'! ! ! x5x x@x'
Misol
Ushbu misolda qidirish shabloni shunday ko'rinishga ega:
x lar orasida 'a' dan
'z' gacha bo'lgan har qanday harf yoki 1,
2 raqamlari:
txt = 'xax xbx x1x x2x x3x'
res = re.sub('x[a-z12]x', '!', txt)
print(res)
Kodni bajarish natijasi:
'! ! ! ! x3x'
Misol
Ushbu misolda qidirish shabloni shunday ko'rinishga ega:
x lar orasida 'a'
dan 'z' gacha bo'lgan harflar 1 yoki
undan ko'p miqdorda:
txt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]+x', '!', txt)
print(res)
Kodni bajarish natijasi:
'xx ! ! ! x123x xa3x'
Misol
Keling, harflar soni nolga teng bo'lishiga yo'l qo'yamiz:
txt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]*x', '!', txt)
print(res)
Natijada biz quyidagini olamiz:
'! ! ! ! x123x xa3x'
Misol
Kvadrat qavslar ichida ekranlangan belgilarni ham ko'rsatish mumkin. Keling, nol yoki undan ko'p marta takrorlanadigan harflar va raqamlar ketma-ketligini topamiz:
txt = 'xx x@x xadx xas12x xa3x'
res = re.sub('x[a-z\d]*x', '!', txt)
print(res)
Kodni bajarish natijasi:
'! x@x ! ! !'
Misol
Agar biz yana kvadrat qavslarni ko'rsatishimiz kerak bo'lsa, ularni ham albatta ekranlashimiz kerak:
txt = 'xx xrx xas[]x x3x'
res = re.sub('x[a-z\[\]]*x', '!', txt)
print(res)
Kodni bajarish natijasi:
'! ! ! x3x'
Amaliy vazifalar
Berilgan satr:
txt = 'aba aea aca aza axa'
Quyidagi shablon bo'yicha topadigan regulyar ifodani yozing:
chetdalarda 'a' harflari turadi,
ular orasida esa - 'b',
'e' yoki 'x' harfi.
Berilgan satr:
txt = 'a1a a3a a7a a9a aba'
Quyidagi shablon bo'yicha topadigan regulyar ifodani yozing:
chetdalarda 'a' harflari turadi,
ular orasida esa - 3 dan
6 gacha bo'lgan raqam.
Berilgan satr:
txt = 'aba aea afa aha aga'
Quyidagi shablon bo'yicha topadigan regulyar ifodani yozing:
chetdalarda 'a' harflari turadi,
ular orasida esa - 'a' dan
'g' gacha bo'lgan harf.
Berilgan satr:
txt = 'aba aea afa aha aga'
Quyidagi shablon bo'yicha topadigan regulyar ifodani yozing:
chetdalarda 'a' harflari turadi,
ular orasida esa - 'a' dan
'f' gacha va 'j'
dan 'z' gacha bo'lgan harf.
Berilgan satr:
txt = 'aAa aea aEa aJa a3a'
Quyidagi shablon bo'yicha topadigan regulyar ifodani yozing:
chetdalarda 'a' harflari turadi,
ular orasida esa - 'a' dan
'f' gacha va 'A'
dan 'D' gacha bo'lgan harf.
Berilgan satr:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Quyidagi shablon bo'yicha topadigan regulyar ifodani yozing:
chetdalarda 'a' harflari turadi,
ular orasida esa - kichik
lotin harflari, qolganlariga tegmasdan.
Berilgan satr:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Quyidagi shablon bo'yicha topadigan regulyar ifodani yozing:
chetdalarda 'a' harflari turadi,
ular orasida esa - kichik va
katta lotin harflari, qolganlariga tegmasdan.
Berilgan satr:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Quyidagi shablon bo'yicha topadigan regulyar ifodani yozing:
chetdalarda 'a' harflari turadi,
ular orasida esa - kichik
lotin harflari va raqamlar, qolganlariga tegmasdan.