python.sariq.dev
  • 💻DASTURLASH ASOSLARI
  • 👀DARSLARNI QANDAY O'ZLASHTIRAMIZ
  • YANGILIK!
  • 🏁ILK QADAMLAR
    • #01 KERAKLI DASTURLAR
    • #02 HELLO WORLD!
    • #03 PRINT(), SINTEKS VA ARIFMETIK AMALLAR
  • 🗂️ O'ZGARUVCHILAR VA MA'LUMOT TURLARI
    • #04 O'ZGARUVCHILAR
    • #05 STRING (MATN)
    • #06 SONLAR
    • #07 LIST (RO'YXAT)
    • #08 RO'YXATLAR BILAN ISHLASH
    • #09 FOR TAKRORLASH OPERATORI
  • 🚦SHARTLAR VA TARMOQLANISH
    • #10 IF-ELSE
    • #11 BIR NECHTA SHARTLARNI TEKSHIRISH
  • LIRIK CHEKINISH #1
    • #12 XATOLAR BILAN ISHLASH
    • #13 GitHub PORTFOLIO
  • 📔LUG'AT (DICTIONARY)
    • #14 LUG'AT BILAN TANISHUV
    • #15 LUG'AT ELEMENTLARI BILAN ISHLASH
    • #16 NESTING
  • 🔁WHILE
    • #17 WHILE TSIKLI
    • #18 WHILE, RO'YXATLAR VA LUG'ATLAR
  • 📜FUNKSIYALAR (FUNCTIONS)
    • #19 FUNKSIYA
    • #20 QIYMAT QAYTARUVCHI FUNKSIYA
    • #21 FUNKSIYA VA RO'YXAT
    • #22 MOSLASHUVCHAN FUNKSIYA (*args, **kwargs)
    • #23 MODULLAR
    • #24 FUNKSIYALAR. SON'GSO'Z.
  • 🛠️ AMALIY MASHG'ULOTLAR
    • #25 "SON TOPISH" O'YINI
    • #26 "SO'Z TOPISH" O'YINI
    • #27 KIRILL-LOTIN TELEGRAM BOT
  • 👨‍💻 OBJECT ORIENTED PROGRAMMING
    • OOP NIMA?
    • #28 KLASSLAR
    • #29 OBYKETLAR BILAN ISHLASH
    • #30 VORISLIK VA POLIMORFIZM
    • #31 INKAPSULYATSIA, KLASSNING XUSUSIYAT VA METODLARI
    • #32 DUNDER METODLAR
  • 📂FAYLLAR VA XATOLAR
    • #33 FAYLLAR BILAN ISHLASH
    • #34 JSON
    • #35 XATOLAR BILAN ISHLASH
  • ☑️ KODNI TEKSHIRISH
    • # 36 FUNKSIYANI TEKSHIRISH
    • #37 KLASSNI TEKSHIRISH
  • 🏁SO'NGSO'Z
    • #38 PYTHON STANDART KUTUBXONASI
    • #39 PIP VA TASHQI KUTUBXONALAR
    • #40 SO'NGSO'Z VA KEYINGI QADAMLAR
  • EXTRAS
    • RegEx
Powered by GitBook
On this page

Was this helpful?

  1. EXTRAS

RegEx

Andoza yordamida matn izlashni oʻrganamiz.

RegEx —ANDOZA ASOSIDA MATN QIDIRISH

Pythondagi juda foydali modullardan biri bu re moduli. Bu modul yordamida biz biror matn berilgan andozaga tushish, tushmalsigini tekshrib ko'rishimiz mumkin. Yoki berilgan andoza asosida matnlar orasidan kerakli matnlarni ajratib olish mumkin.

Keling boshlanishiga sodda misol ko'ramiz. Quyida biz 3 ta so'z va so'zlarni tekshirish uchun andoza yaratdik. Quyidagi andozamiz a harfidan boshlanuvchi (^т), s harfiga tugovchi (р$), 5 harfdan iborat so'zlarni qidiradi (^т...р$).

Avvaliga andozalarni tushunish biroz qiyin bo'lishi mumkin, lekin vaqt o'tishi bilan andoza qanday ishlashini tushunib olasiz deb umid qilamiz.

So'zlarni andozaga solishtirish uchun re.match() funksiyasidan foydalanamiz. Agar tekshirgan so'zimiz andozaga mosh tushsa, re.match() metodi so'zni o'zini qaytaradi, aks holda None qiymatini qaytaradi.

import re

word1 = "темир"
word2 = "томир"
word3 = "тулпор"

andoza = "^т...р"

print(re.match(andoza, word1))
print(re.match(andoza, word2))
print(re.match(andoza, word3))

Natija:

<re.Match object; span=(0, 5), match='темир'>
<re.Match object; span=(0, 5), match='томир'>
None

Natijadan ko'rishimiz mumkin, word1 va word2 o'zgaruvchilari anfozaga tushdi, word3 esa tushmadi.

Keling endi, so'z to'pish o'yinida ishlatilgan soz'lar ro'yxatidan foydalanamiz, va ro'yxatdan biz bergan andozaga tushuvchi so'zlarni ajratib olamiz.

from uzwords import words
andoza = "^т...р$"

matches = []
for word in words:
    if re.match(andoza,word):
        matches.append(word)
print(matches)

Natija:

['табар', 'табор', 'тавир', 'тайёр', 'татар', 'татир', 'тахир', 'тақир', 'театр', 'тембр', 'темир', 'темур', 'тенор', 'тикер', 'тихир', 'товар', 'товор', 'тожир', 'томир', 'тонер', 'тоҳир', 'триер', 'тумор', 'тўпар', 'тўпир']

MetaBelgilar

MetaBelgilar (MetaCharacters) andozadagi maxsus belgilar. MetaBelgilarga quyidagilar kiradi: [] . ^ $ * + ? {} () \ |

Bu belgilar Python tomonidan quyidagicha talqin qilinadi:

[] - Siz qidirayotgan belgilar (harflar, sonlar) to'plami.

Quyidagi andoza barcha м,қ,ў harflaridan biri uchraydigan soʻzlarni topadi (bu judayam koʻp).

andoza = '[мқў]'

Andozada har bir harfni kiritib o'tirmasdan oraliq ham berish mumkin. Misol uchun, quyidagi andoza 0 dan 9 gacha sonlar va а dan г gacha boʻlgan harflardan biri cuhraydigan soʻzlarni qidiradi.

andoza='[0-9а-г]'

Toʻrtburchak qavs ichida ^ belgisini qoʻysak, shu harflar UCHRAMAYDIGAN soʻzlarni qidirishimiz mumkin:

andoza = '[^мқў]'

^ - Matn boshini tekshirish

Yuqoridagi koʻrganimiz kabi, ^ belgisi yordamida matn qaysi belgi (belgilar) bilan boshlanishini koʻrsatishimiz mumkin:

# авв ҳарфларидан бошланган сўзларни топамиз
andoza = '^авв'
matches = []
[matches.append(word) for word in words if re.match(andoza, word)]
print(matches)

Natija:

['аввал', 'авваламбор', 'аввалан', 'аввалбоши', 'аввалги', 'аввалгидай', 'аввалгича', 'аввали', 'аввалига', 'аввало']

Nuqta

Bitta nuqta - bitta belgini anglatadi. Masalan bizga авв harflaridan boshlanadigan va kamida6 harfdan iborat so'zlarni topish talab qilinsa quyidagi andozani yozamiz:

andoza = '^авв...'

$ - Matn oxirini tekshirish

Matn qaysi belgilar bilan tugashini ko'rsatuvchi MetaBelgi.

# 6 harfdan iborat, лоқ bilan tugaydigan matn uchun andoza
andoza = '...лоқ$'

Previous#40 SO'NGSO'Z VA KEYINGI QADAMLAR

Last updated 4 years ago

Was this helpful?