Python'da regex — matn qidiruv shablonlari
Matndan telefon raqami, email yoki ma’lum shakldagi so’zni topish kerak
bo’lganda oddiy qidiruv yetmaydi. Regex (regulyar ifoda) — matndagi
naqshni tavsiflaydigan maxsus til. Python’da u uchun re
moduli ishlatiladi.
Naqsh nima
Regex — “aniq so’z” emas, shakl qidiradi. Masalan “ketma-ket kelgan raqamlar” yoki “email ko’rinishidagi matn”. Shaklni maxsus belgilar bilan yozasiz:
| Belgi | Ma’nosi |
|---|---|
\d |
Bitta raqam (0–9) |
\w |
Harf, raqam yoki _ |
+ |
Oldingidan bir yoki ko’p |
. |
Istalgan bitta belgi |
findall — barcha mosni topish
re.findall naqshga mos hamma qismlarni ro’yxat qilib qaytaradi:
\d+ — “bir yoki undan ko’p raqam” degani. r'...' — regex uchun ishlatiladigan
maxsus string (unda \ oddiy belgi bo’lib qoladi).
search — birinchi mosni tekshirish
re.search matnda naqsh bor-yo’qligini tekshiradi va birinchi mosni beradi:
\w+@\w+\.\w+ — “so’z, @, so’z, nuqta, so’z” naqshi, ya’ni email shakli.
Amaliy mashq
Matndan ma’lumot ajrating:
- Ichida bir nechta telefon raqami bor matn yozing;
findall()bilan barcha raqamlarni toping;\d+naqshi bilan matndagi barcha sonlarni ajrating;search()bilan birinchi email manzilini toping;- topilmagan naqsh bilan
search()chaqiring — natija nima bo’ldi?
findall() va search() qaytaradigan qiymatlar qanday farq qiladi?
Qisqacha xulosa
- Regex — matndagi naqshni (shaklni) tavsiflaydigan til;
remoduli. \d— raqam,\w— harf/raqam,+— bir yoki ko’p,.— istalgan belgi.re.findall— barcha mosni ro’yxat qilib qaytaradi.re.search— birinchi mosni topadi (bor-yo’qligini tekshirish uchun).- Naqshlar
r'...'(raw string) bilan yoziladi; murakkablashtirmang.
Keyingi darsda virtual muhit (venv) — loyihalarni bir-biridan ajratishni ko’ramiz.