Asosiy kontentga o‘tish
Innovialabs

Boshlovchilar uchun regulyar ifodalar: sintaksis bo‘yicha shpargalka

Asoslar4 daq

Qisqacha

Regulyar ifoda — matn qidirish uchun shablon; u belgi sinflari, kvantifikatorlar, langarlar va guruhlardan yig‘iladi; shu to‘rt blokni o‘zlashtirsangiz, ko‘p regexlarni o‘qiy olasiz.

Regulyar ifoda nima

Regulyar ifoda (regex) — qanday matn qidirayotganingizni tasvirlovchi qisqa shablon. U kiritilgan ma’lumot formatini tekshirish, satrlardan ma’lumot ajratib olish, kod va loglarda qidirish va almashtirish uchun ishlatiladi.

Deyarli har qanday regex to‘rtta blokdan yig‘iladi:

  • nimani qidirish — belgilar va belgi sinflari;
  • necha marta — kvantifikatorlar;
  • qayerda — langarlar va chegaralar;
  • qanday guruhlash — guruhlar va muqobillar.

JavaScript, Python, PHP, Java va Go’da sintaksis asosan bir xil, ammo tafsilotlar farq qiladi — o‘z tilingiz hujjatlari bilan solishtiring.

Belgilar va belgi sinflari

ShablonMa’nosiMos kelish misoli
abcaynan «abc»abc
.qator o‘tkazishdan tashqari istalgan belgia, 7, %
\draqam5
\wharf, raqam yoki _a, Z, 3, _
\sbo‘sh joy belgisiprobel, tab
\D, \W, \S\d, \w, \s dan boshqa hammasi
[abc]a, b, c belgilaridan birib
[a-z]diapazondagi belgik
[^0-9]raqamdan boshqa istalgan belgix
\.«istalgan» emas, aynan nuqta.

. * + ? ^ $ ( ) [ ] { } | maxsus belgilari va teskari slesh aynan o‘zini qidirayotganda \ bilan ekranlanishi kerak.

E’tibor bering: ba’zi dvijoklarda \w va \d sukut bo‘yicha faqat lotin harflari va ASCII raqamlarga mos keladi. Kirill yoki o‘zbek lotin harflari (o‘, g‘) uchun aniq sinf yoki Unicode rejimi ishonchliroq.

Kvantifikatorlar

ShablonNecha marta
*0 va undan ko‘p
+1 va undan ko‘p
?0 yoki 1
{3}aynan 3
{2,5}2 dan 5 gacha
{2,}2 va undan ko‘p

Sukut bo‘yicha kvantifikatorlar ochko‘z — iloji boricha ko‘p narsani oladi. Ularni dangasa qilish uchun ? qo‘shing: <b>matn</b> satrida <.+> hammasini oladi, <.+?> esa faqat <b> ni.

Langarlar va chegaralar

ShablonMa’nosi
^satr boshi
$satr oxiri
\bso‘z chegarasi
\Bso‘z chegarasi emas

Validatsiya uchun deyarli doim ^ va $ kerak. \d{4} shabloni «abc12345» ichidan 4 ta raqamni topadi, ^\d{4}$ esa faqat aynan to‘rtta raqamdan iborat satrni o‘tkazadi.

Guruhlar va muqobillar

ShablonMa’nosi
(abc)ushlab qoluvchi guruh
(?:abc)ushlamaydigan guruh
a|ba yoki b
\1birinchi guruhga qaytish havolasi
(?<name>...)nomli guruh (Python’da (?P<name>...))
const re = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/;
const m = "Sana: 2026-03-15".match(re);
console.log(m.groups.year); // "2026"

Guruh faqat kvantifikator yoki muqobil uchun kerak bo‘lsa, (?:...) dan foydalaning — shunda ushlab qolingan guruhlar raqamlanishi buzilmaydi.

Lookahead va lookbehind

Oldinga va orqaga qarovchi tekshiruvlar qo‘shni matnni mos kelishga qo‘shmasdan ko‘rib chiqadi.

ShablonMa’nosi
X(?=Y)ortidan Y kelsa, X
X(?!Y)ortidan Y kelmasa, X
(?<=Y)Xoldida Y bo‘lsa, X
(?<!Y)Xoldida Y bo‘lmasa, X

Klassik misol — parolni tekshirish: ^(?=.*\d)(?=.*[a-z]).{8,}$ — kamida 8 belgi, kamida bitta raqam va bitta kichik harf. Lookbehind hamma dvijoklarda qo‘llab-quvvatlanmaydi, ba’zilari esa uning uzunligini cheklaydi.

Flaglar

  • i — registrni hisobga olmaslik;
  • g — barcha mos kelishlarni topish (JavaScript);
  • m — ^ va $ matnning har bir qatori uchun ishlaydi;
  • s — nuqta qator o‘tkazishga ham mos keladi;
  • u — Unicode rejimi (JavaScript).

Regexlarni qanday testlash

  1. Shablonni regex101 yoki RegExr kabi onlayn testerda yozing: ular mos kelishlarni ajratib ko‘rsatadi va har bir qismni tushuntiradi.
  2. Testerda tilingizdagi xuddi shu dvijokni tanlang.
  3. Mos kelishi kerak va kerak emas bo‘lgan satrlar ro‘yxatini tuzing, bo‘sh satr va chegaraviy holatlarni ham qo‘shing.
  4. Keyingi tahrirlarda regex buzilmasligi uchun bu ro‘yxatni unit testlarga o‘tkazing.

Ko‘p beriladigan savollar

Ko‘pincha ekranlash tufayli: satr literallarida teskari sleshni ikki marta yozish ("\\d") yoki «xom» satrlardan, masalan Python’da r"\d" dan foydalanish kerak. Ikkinchi keng tarqalgan sabab — boshqa dvijok yoki flaglar.

Bunda yordam beramiz

O‘zingiz shug‘ullanmasdan natija olishni istasangiz — biz har kuni shu bilan shug‘ullanamiz.

Loyihani muhokama qilish

Yana o‘qing

G‘oya yoki vazifangiz bormi? Bizga aytib bering

Ish kuni davomida javob beramiz va yechim taklif qilamiz. Konsultatsiya bepul.