Skip to content

Regex (Regular Expression) nima?

Matn bilan ishlashda ko'pincha qidirish, tekshirish yoki belgilarni boshqasiga almashtirish kabi vazifalarni bajarishga to'g'ri keladi. Shu vazifalarni bajarish uchun Regex ishlatiladi.

Quyida eng ko'p tarqalgan Regex vazifalarini keltirib o'tamiz:

  • Foydalanuvchidan kiritilgan email manzili to'g'riligini tekshirish.
  • Kiritilgan matndan telefon raqamni ajratib olish.
  • Matndan faqat narxlar yoki sanalarni topish.

Bunday holatlarda oddiy qidiruv usullari yetarli bo'lmaydi. Chunki matn murakkab bo'lishi, belgilar turlicha yozilishi mumkin. Shu sababli Regex ishlatiladi.

Regex qanday ishlaydi?

Regex matn ichida kerkali moslikni izlash usuli. Matn ichidan qidirish uchun Regex ni maxsus shablonlari bor.

Masalan:

  1. Matn: "Bugun sana 2025-08-31"
  2. Regex shablon: \d{4}-\d{2}-\d{2}
  3. Natijada "2025-08-31" ni topib beradi.

Bu yerda:

  • \d — raqam,
  • {4} — 4 marta takrorlanishi ya'ni 4 ta raqam,
  • - — oddiy minus belgisi,
  • {2} — 2 marta takrorlanishi ya'ni 2 ta raqam.

Regex asosiy belgilar jadvali

Belgilar Ma'nosi Misol Natija
. Har qanday bitta belgi c.t cat, cut mos keladi
\d Raqam (0–9) \d\d 12, 45 topiladi
\w Harf yoki raqam (word character) \w+ hello123
\s Bo'sh joy (space, tab) salom\s* salom, salom
+ Bir yoki undan ko'p marta a+ a, aa, aaaa
* Nol yoki ko'p marta ba* b, ba, baa
? Nol yoki 1 marta colou?r color, colour
{n} Aniq marta \d{4} 2025
{n,m} n dan m gacha marta \d{2,4} 12, 2025
^ Matn boshini bildiradi ^salom faqat boshida salom bo'lsa
$ Matn oxiri dunyo$ oxirida dunyo bo'lsa
[] Belgilar to'plami [abc] a, b, c
[^] Belgilardan tashqari [^0-9] raqamdan boshqa belgilar
\b So'z chegarasi \bcat\b faqat cat so'zi
() Guruhlash (ab)+ ab, abab

Misollar

Email manzili topish:

[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-z]{2,}
  • [...] -> foydalanuvchi nomidagi belgilar
  • @ -> doim @ bo'lishi kerak
  • .[a-z]{2,} oxirida .com, .uz, .org va hokazo

URL (veb-sayt manzili):

https?:\/\/[a-zA-Z0-9.-]+\.[a-z]{2,}(/[^\s]*)?
  • https? -> http yoki https
  • :\/\/ -> :// belgisi
  • [a-zA-Z0-9.-]+.[a-z]{2,} -> domen (masalan sayt.uz)
  • (/[^\s]*)? -> ixtiyoriy manzil (/blog/page)

Go va Regex

Go'da regexp nomli standart kutubxona bor. U orqali matndan qidirish, tekshirish va almashtirishlarni qilish mumkin.

Misol:

Biror matn regex shabloniga mos keladimi yoki yo'qligini tekshirish.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    // Telefon raqamini tekshirish uchun regex shablon
    re := regexp.MustCompile(`\+998\d{9}`)

    // Matndan tekshirish
    mos := re.MatchString("+998901234567")
    fmt.Println(mos) // true

    // Matndan tekshirish
    mos2 := re.MatchString("901234567")
    fmt.Println(mos2) // false
}

Natija:

true
false