Java RegEx (muntazam ifodalar)


ULASHISH

Muntazam ifoda (regular expression) nima?

Muntazam ifoda — qidiruv shablonini hosil qiluvchi belgilar ketma-ketligi. Matndan ma’lumot qidirayotganda nimani qidirayotganingizni tasvirlash uchun ushbu qidiruv shablonidan foydalanishingiz mumkin.

Muntazam ifoda bitta belgidan yoki murakkabroq shablondan iborat bo‘lishi mumkin.

Muntazam ifodalar yordamida barcha turdagi matnda qidirish va matnni almashtirish amallarini bajarish mumkin.

Java tilida o‘rnatilgan Regular Expression sinfi yo‘q, lekin muntazam ifodalar bilan ishlash uchun java.util.regex paketini import qilishimiz mumkin. Paket quyidagi sinflarni o‘z ichiga oladi:

  • Pattern sinfi - shablonni belgilaydi (qidiruvda ishlatish uchun)
  • Matcher sinfi - shablonni qidirish uchun ishlatiladi
  • PatternSyntaxException sinfi - muntazam ifoda shablonidagi sintaksis xatosini bildiradi

Misol

Gapda "w3schools" so‘zi uchrash-uchramasligini aniqlang:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
  public static void main(String[] args) {
    Pattern pattern = Pattern.compile("w3schools", Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher("Visit W3Schools!");
    boolean matchFound = matcher.find();
    if(matchFound) {
      System.out.println("Match found");
    } else {
      System.out.println("Match not found");
    }
  }
}
// Outputs Match found

O‘zingiz sinab ko‘ring »

Misol izohi

Ushbu misolda "w3schools" so‘zi gap ichidan qidirilmoqda.

Avval Pattern.compile() metodi yordamida shablon yaratiladi. Birinchi parametr qaysi shablon qidirilayotganini bildiradi, ikkinchi parametr esa qidiruv katta-kichik harflarni farqlamasligi kerakligini bildiruvchi bayroqni (flag) o‘z ichiga oladi. Ikkinchi parametr ixtiyoriy.

matcher() metodi stringdan shablonni qidirish uchun ishlatiladi. U bajarilgan qidiruv haqidagi ma’lumotlarni o‘z ichiga olgan Matcher obyektini qaytaradi.

find() metodi shablon stringda topilsa true, topilmasa false qaytaradi.



Bayroqlar (flags)

compile() metodidagi bayroqlar qidiruv qanday bajarilishini o‘zgartiradi. Quyida ulardan ba’zilari keltirilgan:

  • Pattern.CASE_INSENSITIVE - qidiruv bajarilganda harflarning katta-kichikligi e’tiborga olinmaydi.
  • Pattern.LITERAL - qidiruv bajarilganda shablondagi maxsus belgilar hech qanday maxsus ma’noga ega bo‘lmaydi va oddiy belgilar sifatida qaraladi.
  • Pattern.UNICODE_CASE - ingliz alifbosidan tashqaridagi harflarning katta-kichikligini ham e’tiborsiz qoldirish uchun uni CASE_INSENSITIVE bayrog‘i bilan birga ishlating

Muntazam ifoda shablonlari

Pattern.compile() metodining birinchi parametri — shablon. U nima qidirilayotganini tasvirlaydi.

Qavslar belgilar oralig‘ini topish uchun ishlatiladi:

Ifoda Tavsif
[abc] Qavslar ichidagi variantlardan bitta belgini topadi
[^abc] Qavslar ichida BO‘LMAGAN bitta belgini topadi
[0-9] 0 dan 9 gacha oraliqdagi bitta belgini topadi

Metabelgilar

Metabelgilar — maxsus ma’noga ega belgilar:

Metabelgi Tavsif
| | bilan ajratilgan shablonlardan istalgan biriga moslikni topadi, masalan: cat|dog|fish
. Istalgan belgining faqat bitta nusxasini topadi
^ String boshidagi moslikni topadi, masalan: ^Hello
$ String oxiridagi moslikni topadi, masalan: World$
\d Raqamni topadi
\s Bo‘sh joy belgisini topadi
\b So‘z boshidagi (masalan: \bWORD) yoki so‘z oxiridagi (masalan: WORD\b) moslikni topadi
\uxxxx xxxx o‘n oltilik soni bilan belgilangan Unicode belgisini topadi

Kvantifikatorlar

Kvantifikatorlar miqdorlarni belgilaydi:

Kvantifikator Tavsif
n+ Kamida bitta n bo‘lgan istalgan stringga mos keladi
n* n nol yoki undan ko‘p marta uchraydigan istalgan stringga mos keladi
n? n nol yoki bir marta uchraydigan istalgan stringga mos keladi
n{x} Ketma-ket X ta n bo‘lgan istalgan stringga mos keladi
n{x,y} Ketma-ket X dan Y tagacha n bo‘lgan istalgan stringga mos keladi
n{x,} Ketma-ket kamida X ta n bo‘lgan istalgan stringga mos keladi



W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!