RegEx
RegEx Nima?
RegEx yoki Regular Expression (Muntazam Ifoda) qidiruv naqshini shakllantiruvchi belgilar ketma-ketligidir.
RegEx satrda ko'rsatilgan qidiruv naqshini o'z ichiga olganligini tekshirish uchun ishlatilishi mumkin.
RegEx Moduli
Python'da Muntazam Ifodalar bilan ishlash uchun re nomli ichki paket mavjud.
re modulini import qiling:
import rePython'da RegEx
re modulini import qilganingizdan so'ng, muntazam ifodalardan foydalanishni boshlashingiz mumkin:
Misol
Satr "The" bilan boshlanib, "Spain" bilan tugasa, uni qidiring:
import re
txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)RegEx Funksiyalari
re moduli satrda moslikni qidirishga imkon beruvchi bir qator funksiyalarni taklif qiladi:
| Funksiya | Tavsif |
|---|---|
findall | Barcha mosliklarni o'z ichiga olgan ro'yxatni qaytaradi |
search | Agar satrda biror joyda moslik bo'lsa, Match obyektini qaytaradi |
split | Har bir moslikda satrni bo'lingan ro'yxatni qaytaradi |
sub | Bir yoki ko'p mosliklarni satr bilan almashtiradi |
Metabelgilar
Metabelgilar maxsus ma'noga ega bo'lgan belgilardir:
| Belgi | Tavsif | Misol |
|---|---|---|
[] | Belgilar to'plami | "[a-m]" |
\ | Maxsus ketma-ketlikni bildiradi (maxsus belgilarni ham qochirish uchun ishlatiladi) | "\d" |
. | Har qanday belgi (yangi qator belgisi bundan mustasno) | "he..o" |
^ | Bilan boshlanadi | "^hello" |
$ | Bilan tugaydi | "planet$" |
* | Nol yoki undan ko'p paydo bo'lish | "he.*o" |
+ | Bir yoki undan ko'p paydo bo'lish | "he.+o" |
? | Nol yoki bir paydo bo'lish | "he.?o" |
{} | Aniqlangan miqdorda paydo bo'lish | "he.{2}o" |
| | Yoki | "falls|stays" |
() | Qamrab olish va guruhlash |
Maxsus Ketma-ketliklar
Maxsus ketma-ketlik \ belgisi va quyidagi ro'yxatdagi belgilardan biri bilan keladi va maxsus ma'noga ega:
| Belgi | Tavsif | Misol |
|---|---|---|
\A | Agar ko'rsatilgan belgilar satr boshida bo'lsa moslikni qaytaradi | "\AThe" |
\b | Ko'rsatilgan belgilar so'z boshida yoki oxirida bo'lsa moslikni qaytaradi (boshdagi "r" satrni "xom satr" sifatida qabul qilishni ta'minlaydi) | r"\bain" r"ain\b" |
\B | Ko'rsatilgan belgilar mavjud bo'lsa, lekin so'z boshida yoki oxirida BO'LMASA moslikni qaytaradi | r"\Bain" r"ain\B" |
\d | Satrda raqamlar (0-9) bo'lsa moslikni qaytaradi | "\d" |
\D | Satrda raqamlar BO'LMASA moslikni qaytaradi | "\D" |
\s | Satrda bo'sh joy belgisi bo'lsa moslikni qaytaradi | "\s" |
\S | Satrda bo'sh joy belgisi BO'LMASA moslikni qaytaradi | "\S" |
\w | Satrda har qanday so'z belgisi (a-z, 0-9, pastki chiziq _ belgisi) bo'lsa moslikni qaytaradi | "\w" |
\W | Satrda so'z belgisi BO'LMASA moslikni qaytaradi | "\W" |
\Z | Ko'rsatilgan belgilar satr oxirida bo'lsa moslikni qaytaradi | "Spain\Z" |
To'plamlar
To'plam kvadrat qavslar ichidagi belgilar to'plami [] bo'lib, maxsus ma'noga ega:
| To'plam | Tavsif |
|---|---|
[arn] | Ko'rsatilgan belgilardan biri (a, r yoki n) mavjud bo'lsa moslikni qaytaradi |
[a-n] | a dan n gacha bo'lgan har qanday kichik harf uchun moslikni qaytaradi |
[^arn] | a, r va n dan tashqari har qanday belgi uchun moslikni qaytaradi |
[0123] | Ko'rsatilgan raqamlardan biri (0, 1, 2 yoki 3) mavjud bo'lsa moslikni qaytaradi |
[0-9] | 0 dan 9 gacha bo'lgan har qanday raqam uchun moslikni qaytaradi |
[0-5][0-9] | 00 dan 59 gacha bo'lgan har qanday ikki xonali son uchun moslikni qaytaradi |
[a-zA-Z] | a dan z gacha bo'lgan har qanday belgi (kichik yoki katta harf) uchun moslikni qaytaradi |
[+] | To'plamlarda +, *, ., |, (), $, {} maxsus ma'noga ega emas, shuning uchun [+] satrda har qanday + belgisi uchun moslikni qaytaradi |
findall() Funksiyasi
findall() funksiyasi barcha mosliklarni o'z ichiga olgan ro'yxatni qaytaradi.
Misol
Barcha mosliklar ro'yxatini chop etish:
import re
txt = "The rain in Spain"
x = re.findall("ai", txt)
print(x)Ro'yxat mosliklarni topilgan tartibda o'z ichiga oladi.
Agar moslik topilmasa, bo'sh ro'yxat qaytariladi:
Misol
Moslik topilmasa, bo'sh ro'yxatni qaytarish:
import re
txt = "The rain in Spain"
x = re.findall("Portugal", txt)
print(x)search() Funksiyasi
search() funksiyasi satrda moslikni qidiradi va agar moslik bo'lsa, Match obyektini qaytaradi.
Agar bir nechta moslik bo'lsa, faqat birinchi moslik qaytariladi:
Misol
Satrda birinchi bo'sh joy belgisini qidirish:
import re
txt = "The rain in Spain"
x = re.search("\s", txt)
print("Birinchi bo'sh joy belgisi joylashuvi:", x.start())Agar moslik topilmasa, None qiymati qaytariladi:
Misol
Moslik qaytarmaydigan qidiruvni amalga oshirish:
import re
txt = "The rain in Spain"
x = re.search("Portugal", txt)
print(x)split() Funksiyasi
split() funksiyasi satrni har bir moslikda bo'lingan ro'yxatni qaytaradi:
Misol
Har bir bo'sh joy belgisida bo'lish:
import re
txt = "The rain in Spain"
x = re.split("\s", txt)
print(x)maxsplit parametrini ko'rsatib, paydo bo'lish sonini boshqarishingiz mumkin:
Misol
Satrni faqat birinchi moslikda bo'lish:
import re
txt = "The rain in Spain"
x = re.split("\s", txt, 1)
print(x)sub() Funksiyasi
sub() funksiyasi mosliklarni siz tanlagan matn bilan almashtiradi:
Misol
Har bir bo'sh joy belgisini 9 raqami bilan almashtirish:
import re
txt = "The rain in Spain"
x = re.sub("\s", "9", txt)
print(x)count parametrini ko'rsatib, almashtirishlar sonini boshqarishingiz mumkin:
Misol
Birinchi 2 ta moslikni almashtirish:
import re
txt = "The rain in Spain"
x = re.sub("\s", "9", txt, 2)
print(x)Match obyekti
Match obyekti qidiruv va natija haqida ma'lumotni o'z ichiga olgan obyektdir.
Eslatma
Agar moslik bo'lmasa, Match obyekti o'rniga None qiymati qaytariladi.
Misol
Match obyekti qaytaradigan qidiruvni amalga oshirish:
import re
txt = "The rain in Spain"
x = re.search("ai", txt)
print(x) # bu obyektni chop etadiMatch obyekti qidiruv va natija haqida ma'lumot olish uchun ishlatiladigan xususiyatlar va metodlarga ega:
.span()moslikning boshlang'ich va tugash pozitsiyalarini o'z ichiga olgan tuple qaytaradi..stringfunksiyaga uzatilgan satrni qaytaradi..group()moslik bo'lgan satr qismini qaytaradi.
Misol
Birinchi moslik paydo bo'lishining pozitsiyasini (boshlang'ich va tugash pozitsiyasini) chop etish.
Muntazam ifoda katta "S" harfi bilan boshlanadigan har qanday so'zni qidiradi:
import re
txt = "The rain in Spain"
x = re.search(r"\bS\w+", txt)
print(x.span())Misol
Funksiyaga uzatilgan satrni chop etish:
import re
txt = "The rain in Spain"
x = re.search(r"\bS\w+", txt)
print(x.string)Misol
Moslik bo'lgan satr qismini chop etish.
Muntazam ifoda katta "S" harfi bilan boshlanadigan har qanday so'zni qidiradi:
import re
txt = "The rain in Spain"
x = re.search(r"\bS\w+", txt)
print(x.group())Eslatma
Agar moslik bo'lmasa, Match obyekti o'rniga None qiymati qaytariladi.
