← Barcha vositalar

Regex Sinovchisi

Muntazam ifodalarni o'z matningizga nisbatan brauzerda jonli tuzing, sinang va tuzating. Belgi sinflari, kvantifikatorlar, langarlar, guruhlar va flaglarni o'rganing.

Regex Tester: shablonlarni o'z matningizga qarshi qurish va tuzatish

Muntazam ifoda (regular expression) — matn shaklini tasvirlash uchun mo'ljallangan kichik til. "Aynan shu so'z shu yerdami?" deb so'rash o'rniga, regex sizga "shunga o'xshash ko'rinadigan satr bormi?" deb so'rashga imkon beradi. Aynan shu narsa uni kod muharrirlarida, jurnal fayllarida, forma kiritmalarida va skriptlarda matn topish, tekshirish, chiqarib olish va almashtirish uchun kuchli qiladi. Bu, shuningdek, uni xato qilish oson qiladi, chunki boshingizda yaxshi o'qilgan shablon jimgina ko'p yoki kam, yoki umuman hech narsani mos kelmasligi mumkin.

Shuning uchun interaktiv sinash taxmin qilishdan yaxshiroq. Shablon yozib, haqiqiy namuna matn bo'ylab moslar yorishayotganini kuzatganingizda, siz zudlik bilan aloqa-javob olasiz: nima ushlanganini, nima o'tib ketganini va qaysi tutib olish (capture) guruhi qaysi bo'lakni olganini ko'rasiz. Bizning Regex Testerimiz to'liq brauzeringizda ishlaydi. Shabloningiz va namuna matningiz hech qachon sahifadan chiqib ketmaydi, shuning uchun jurnal qatorlarini, elektron pochtalarni yoki ishlab chiqarish ma'lumotlarini hech narsani serverga yubormasdan joylashtira olasiz.

To'q indigo fonda oqib turgan ma'lumot oqimidan maxsus tilla belgilarni tutib olayotgan porlab turgan ko'k filtr
Regex filtr kabi ishlaydi va faqat shabloningizga mos keladigan tokenlarni tanlaydi.

Bilishga arzigulik quruvchi bloklar

Ko'pchilik kundalik shablonlar kichik bo'laklar to'plamidan yig'iladi. Ularni o'rganib oling, va siz duch keladigan ko'pchilik regexlarni o'qiy olasiz.

Belgilar sinflari ruxsat etilgan belgilar to'plamini tasvirlaydi. [aeiou] istalgan bitta unlini, [0-9] bitta raqamni va [a-zA-Z] bitta harfni moslashtiradi. Kvadrat qavs ichidagi qo'shqoziq belgisi to'plamni inkor qiladi, shuning uchun [^0-9] "raqam bo'lmagan har qanday belgi" degani. Qisqartmalar yozishni tejaydi: \d — raqam, \w — so'z belgisi (harflar, raqamlar, pastki chiziqcha), \s — bo'sh joy, nuqta . esa deyarli har qanday bitta belgini moslashtiradi.

Miqdor ko'rsatkichlari (quantifiers) oldingi bo'lak necha marta takrorlanishi mumkinligini bildiradi. * — nol yoki undan ko'p, + — bir yoki undan ko'p, ? esa — nol yoki bitta (ixtiyoriy) degani. Aniq sonlar uchun {3} — aynan uchta, {2,4} esa ikkidan to'rttagacha degani. Shunday qilib, \d{4} to'rt xonali yilni, colou?r esa ikkala imloni ham moslashtiradi.

Ankrlar (anchors) shablonni belgiga emas, pozitsiyaga mahkamlaydi. ^ matn boshini, $ matn oxirini, \b esa so'z chegarasini belgilaydi. ^Error shabloni faqat "Error" bilan boshlanadigan qatorlarni moslashtiradi, bu esa jurnallarni skanerlashda aynan sizga kerak bo'ladi.

Guruhlar shablon qismini qavslarga o'raydi, ham bir necha belgiga bir vaqtda miqdor ko'rsatkichini qo'llash, ham keyin qayta ishlatish uchun mos kelgan matnni tutib olish uchun. (\d{4})-(\d{2})-(\d{2})da har bir guruh keyinroq chiqarib olishingiz mumkin bo'lgan sana komponentini tutib oladi. Vertikal chiziq bilan alternativa "yoki" kabi ishlaydi: cat|dog|fish uchta so'zdan istalgan birini moslashtiradi.

Haqiqatan foydalanadigan shablonlar

Bir necha takrorlanadigan vazifalar ko'pchilik haqiqiy ishni qamrab oladi. Elektron pochtaga o'xshash narsani ushlash uchun [\w.+-]+@[\w-]+\.[\w.-]+ amaliy boshlang'ich nuqta; rasmiy spetsifikatsiya bo'yicha to'liq elektron pochta tekshiruvi mashhur darajada murakkab, va bo'sh shablon odatda foydalanuvchilarni rad etish o'rniga nomzodlarni ajratib ko'rsatish uchun to'g'ri tanlov hisoblanadi.

Sonlar uchun \d+ raqamlar ketma-ketligini ushlaydi, -?\d+(\.\d+)? esa ixtiyoriy manfiylar va o'nliklarni moslashtiradi. Boshi va oxiridagi bo'sh joyni kesish uchun ^\s+|\s+$ni moslashtirib, uni hech narsaga almashtiring. Takrorlangan so'zlarni topish uchun orqaga havola (backreference) shabloni \b(\w+)\s+\1\b so'zdan keyin uning o'zi kelishini moslashtiradi, bu yerda \1 birinchi tutib olingan guruhga ishora qiladi.

Tanlangan so'zlar tilla rangda porlab, to'q indigo fonda ko'k matnga o'xshash zarrachalar daryosida ajratib ko'rsatilgan
Jonli ajratib ko'rsatish matningizning aynan qaysi bo'laklari shablonga mos kelishini ko'rsatadi.

Bayroqlar moslashtirish qanday ishlashini o'zgartiradi

Bayroqlar butun shablonni o'zgartiradigan kalitlar. Global bayroq (g) faqat birinchisida to'xtash o'rniga har bir mosni topadi, bu esa barcha uchrashlarni ajratib ko'rsatayotganingizda kerak bo'ladi. Katta-kichik harfga sezgirmas bayroq (i) errorni "Error" va "ERROR" bilan bir xilda moslashtiradi. Ko'p qatorli bayroq (m) ^ va $ni o'zgartiradi, shunda ular faqat butun matnning emas, balki har bir qatorning boshi va oxirida moslashadi, bu esa qator-qator jurnal ishi uchun zarur. Boshqa foydali bayroqlarga s (dotall, nuqtaga qator ko'chirishlarni ham moslashtirishga ruxsat berish) va to'liq Unicode qayta ishlash uchun u kiradi.

Til bo'yicha shevalar biroz farq qiladi

Regex — bitta qat'iy standart emas, balki shevalar oilasi. JavaScript, Python, PCRE (PHP), Java, .NET, Go va Rust yuqoridagi asosiy sintaksisga kelishib olishgan, lekin ular chekkalarda ajraladi: lookbehind qo'llab-quvvatlash, nomlangan guruh sintaksisi ((?<name>...) yoki (?P<name>...)), Unicode xususiyat qochish belgilari va qanday bayroqlar mavjudligi — hammasi farq qiladi. Bitta dvigatelda ishlaydigan shablon boshqasida kichik o'zgartirishga muhtoj bo'lishi mumkin, shuning uchun haqiqatan yetkazayotgan sheva bilan sinab ko'rish foydali. Shabloningizni to'g'ri sozlaganingizdan so'ng, boshqa dasturchi vositalarimiz va matn vositalari siz endi moslagan ma'lumotni tozalash, kodlash va o'zgartirish bilan bog'liq atrofdagi ishga yordam berishi mumkin.

Tez-tez so'raladigan savollar

Matnim serverga yuboriladimi?

Yo'q. Regex Tester to'liq brauzeringizda ishlaydi. Shabloningiz va namuna matningiz qurilmangizda qoladi va hech qachon yuklanmaydi, shuning uchun maxfiy ma'lumot joylashtirish xavfsiz.

Ushbu vosita qaysi regex shevasidan foydalanadi?

U brauzeringizga o'rnatilgan JavaScript regex dvigatelidan foydalanadi. Asosiy sintaksis ko'pchilik tildan bilganingizga mos keladi, garchi ba'zi ilg'or xususiyatlar PCRE, Python yoki .NET'dan biroz farq qilsa ham.

Ochko'z (greedy) va dangasa (lazy) moslashtirish o'rtasidagi farq nima?

Standart bo'yicha miqdor ko'rsatkichlar ochko'z bo'lib, imkon boricha ko'proq matnni oladi. So'roq belgisini qo'shish ularni dangasa qiladi, shunda ular imkon boricha kamroq oladi. Masalan, nuqta yulduzcha shablon ochko'z, nuqta yulduzcha so'roq belgisi esa dangasa.

Haqiqiy maxsus belgini qanday moslashtiraman?

Uni teskari chiziqcha bilan qochiring. Haqiqiy nuqtani moslashtirish uchun teskari chiziqcha nuqta deb yozing. Xuddi shu narsa qavslar, kvadrat qavslar, plyus belgisi va so'roq belgisi kabi boshqa maxsus belgilarga ham tegishli.

Nega shablonim hech narsani moslashtirmayapti?

Umumiy sabablar — global bayroqning yo'qligi, mosni noto'g'ri pozitsiyaga mahkamlaydigan ankrlar, qochib o'tilmagan maxsus belgi yoki kutgan chegaradan oshib ketadigan ochko'z miqdor ko'rsatkichlari. Aybdorni topish uchun bo'lakma-bo'lak sinab ko'ring.

Mosning qismlarini tutib ola olamanmi?

Ha. Tutib olish guruhini yaratish uchun shablon bo'limini qavslarga o'rang. Har bir guruh alohida hisobot beriladi, bu esa sanadan yil, oy va kun kabi maydonlarni chiqarib olishga imkon beradi.