Java RegEx (muntazam ifodalar)
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:
Patternsinfi - shablonni belgilaydi (qidiruvda ishlatish uchun)Matchersinfi - shablonni qidirish uchun ishlatiladiPatternSyntaxExceptionsinfi - 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
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 uniCASE_INSENSITIVEbayrog‘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!
