Skip to content

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:

python
import re

Python'da RegEx

re modulini import qilganingizdan so'ng, muntazam ifodalardan foydalanishni boshlashingiz mumkin:

Misol

Satr "The" bilan boshlanib, "Spain" bilan tugasa, uni qidiring:

python
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:

FunksiyaTavsif
findallBarcha mosliklarni o'z ichiga olgan ro'yxatni qaytaradi
searchAgar satrda biror joyda moslik bo'lsa, Match obyektini qaytaradi
splitHar bir moslikda satrni bo'lingan ro'yxatni qaytaradi
subBir yoki ko'p mosliklarni satr bilan almashtiradi

Metabelgilar

Metabelgilar maxsus ma'noga ega bo'lgan belgilardir:

BelgiTavsifMisol
[]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:

BelgiTavsifMisol
\AAgar ko'rsatilgan belgilar satr boshida bo'lsa moslikni qaytaradi"\AThe"
\bKo'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"
\BKo'rsatilgan belgilar mavjud bo'lsa, lekin so'z boshida yoki oxirida BO'LMASA moslikni qaytaradir"\Bain" r"ain\B"
\dSatrda raqamlar (0-9) bo'lsa moslikni qaytaradi"\d"
\DSatrda raqamlar BO'LMASA moslikni qaytaradi"\D"
\sSatrda bo'sh joy belgisi bo'lsa moslikni qaytaradi"\s"
\SSatrda bo'sh joy belgisi BO'LMASA moslikni qaytaradi"\S"
\wSatrda har qanday so'z belgisi (a-z, 0-9, pastki chiziq _ belgisi) bo'lsa moslikni qaytaradi"\w"
\WSatrda so'z belgisi BO'LMASA moslikni qaytaradi"\W"
\ZKo'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'plamTavsif
[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:

python
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:

python
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:

python
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:

python
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:

python
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:

python
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:

python
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:

python
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:

python
import re

txt = "The rain in Spain"
x = re.search("ai", txt)
print(x)  # bu obyektni chop etadi

Match 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.
  • .string funksiyaga 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:

python
import re

txt = "The rain in Spain"
x = re.search(r"\bS\w+", txt)
print(x.span())

Misol

Funksiyaga uzatilgan satrni chop etish:

python
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:

python
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.