JavaRush /Java blogi /Random-UZ /Java tilidagi oddiy ifodalar
terranum
Daraja
Milan

Java tilidagi oddiy ifodalar

Guruhda nashr etilgan
RegExMuntazam ifoda matnga qo'llanilishi mumkin bo'lgan naqsh turidir (String, Java-da). Java muntazam ifodalarni moslashtirish uchun java.util.regex paketini taqdim etadi. Muntazam iboralar Perl dasturlash tiliga juda o'xshaydi va ularni o'rganish juda oson. Muntazam ibora matnga (uning bir qismiga) mos keladi yoki mos kelmaydi. * Agar oddiy ibora matnning bir qismiga mos kelsa, biz uni topishimiz mumkin. ** Agar muntazam ibora qo‘shma bo‘lsa, unda biz oddiy iboraning qaysi qismi matnning qaysi qismiga mos kelishini osongina aniqlashimiz mumkin.

Birinchi misol

Oddiy ibora " [a-z] +" matndagi barcha kichik harflarga mos keladi. dan inklyuzivgacha [a-z]boʻlgan har qanday belgini bildiradi va “bir yoki bir nechta” belgilarni bildiradi. Faraz qilaylik, "kod 2 java o'quv qo'llanmasini o'rganish" qatorini taqdim etamiz. Buni Java'da qanday qilish kerak Avval shablonni yaratishingiz kerak: az+
import java.util.regex.*;
Pattern p = Pattern.compile([a-z]+);
matcherKeyinchalik diagrammada xabar yuborish orqali matn uchun yaratishingiz kerak :
Matcher m = p.matcher(“code 2 learn java tutorial”);
QAYD: Konstruktorlar ham yo'q Pattern, Matcherbiz ularni sinf usullari yordamida yaratamiz Pattern. Pattern Class:Sinf ob'ekti muntazam ifodaning ifodasini tashkil qiladi. Pattern klassi umumiy konstruktorlarni taqdim etmaydi. Shablonni yaratish uchun avval umumiy statik usullardan birini chaqirishingiz kerak, keyin esa sinf ob'ektini qaytaradi Pattern. Bu usullar argument sifatida muntazam ifodani oladi. Matcher Class:Finder ob'ekti naqshni sharhlovchi va kiritish satrida mos keladigan operatsiyalarni bajaradigan vositadir. PatternSinf kabi , Matcherunda umumiy konstruktorlar yo'q. Ob'ektni sinf ob'ektida Matcherusulni chaqirish orqali olasiz . Ushbu bosqichlarni bajarganimizdan so'ng va endi bizda klassning namunasi bor , endi naqsh topilgan yoki topilmaganligini va agar topilgan bo'lsa, qaysi holatda va hokazolarni tekshirishimiz mumkin. Agar naqsh butun satrga mos kelsa, true qiymatini qaytaradi, aks holda noto'g'ri. Agar naqsh satr boshiga mos kelsa, true qiymatini qaytaradi, aks holda noto'g'ri. naqsh matnning istalgan qismiga mos kelsa, true qiymatini qaytaradi. matcherPatternMatcher m m.matches()m.lookingAt()m.find ()

Moslikni topish

Muvaffaqiyatli o'yindan so'ng, m.start() mos keladigan birinchi belgi indeksini qaytaradi va m.end() oxirgi mos keladigan belgi indeksini va yana bittasini qaytaradi. Agar muvaffaqiyatsiz urinish bo'lsa va hech qanday mos topilmasa, m.start()ular m.end()otishadiIllegalStateException
  • Bu RuntimeExceptionsiz uni qo'lga olishingiz shart emas.
Oxirgi mos keladigan belgi indeksini va bittani qaytarish g'alati tuyulishi mumkin m.end(), lekin ko'pchilik String.
  • Masalan,“Now is the time“.substring(m.start(), m.end())
xuddi shu qatorni qaytaradi. Keling, kodni ko'rib chiqaylik:
import java.util.regex.*;

public class RegexTest {
    public static void main(String args[]) {
        String pattern = "[a-z]+";
        String text = "code 2 learn java tutorial";
        Pattern p = Pattern.compile(pattern);
        Matcher m = p.matcher(text);
        while(m.find()) {
            System.out.print(text.substring(m.start(), m.end()) + "*");
        }
    }
}
Output: code*learn*java*tutorial*

Qo'shimcha usullar

Agar mos keladigan bo'lsa, unda:
  • m.replaceFirst(replacement)yangi satrni qaytaradi, bu erda naqshga mos keladigan birinchi pastki qator bilan almashtiriladireplacement
  • m.replaceAll(replacement)yangi satrni qaytaradi, bu erda naqshga mos keladigan har bir pastki qator almashtiriladi
  • m.find(StartIndex)belgilangan indeksdan boshlab keyingi moslikni toping
  • m.reset()shablonni qayta tiklaydi
  • m.reset(NewText)topuvchini qayta tiklaydi va unga yangi matn beradi (ehtimol String, StringBufferyoki CharBuffer)

Oddiy ifoda sintaksisi

  • ^Qator boshiga mos keladi.
  • $Satrning oxiriga mos keladi.
  • .Yangi qatordan tashqari har qanday bitta belgiga mos keladi. m opsiyasidan foydalanish uni yangi qatorga moslashtirish imkonini beradi.
  • [...]Qavslar ichidagi istalgan bitta belgiga mos keladi.
  • [^ ...]Qavs ichida bo'lmagan har qanday bitta belgiga mos keladi.
  • \AButun qatorni boshlang.
  • \zButun qatorning oxiri.
  • \ZYakuniy satr terminatoridan tashqari butun qatorning oxiri.
  • re*Oldingi iboraning 0 yoki undan ortiq takrorlanishiga mos keladi.
  • re+Oldingi ifodaning bir yoki bir nechta mosligi.
  • re?0 yoki 1 oldingi ifodaning joylashuviga mos keladi.
  • re{n}To'liq mos keladi N Oldingi ifodaning takrorlanish soni.
  • re{n,}Oldingi iboraning N yoki undan ortiq takrorlanishiga mos keladi.
  • re{n, m}Avvalgi ifodaning kamida n va ko‘pi bilan m ta takrorlanishiga mos keladi.
  • a|ba yoki b mos keladi.
  • (re)Muntazam iboralar guruhi va topilgan matnni eslab qolish.
  • (?: re)Topilgan matnni eslamaydigan muntazam iboralar guruhlari.
  • (?> re)Qaytishsiz mustaqil naqshga mos keladi.
  • \wHarflar va raqamlarga mos keladi [a-zA-Z_0-9].
  • \WBu harflar yoki raqamlar emas.
  • \sBo'shliqlarga mos keladi. [\t\n\r\f] ga ekvivalent.
  • \SBo'shliq belgilar emas.
  • \dRaqamlarga mos keladi. [0-9] ga teng.
  • \DRaqamlarga mos kelmaydi.
  • \GOxirgi o'yinning nuqtasiga mos keladi.
  • \nYangi qatorga mos keladi.
  • \bSo'z chegarasida mos keladi.
  • \BSo'z chegarasida emas.
  • \n, \t, etc.Yangi qator, karetani qaytarish, yorliq va hokazo belgilar.
  • \Q\E oldidan barcha belgilarni keltiring.
  • \EIqtibos \Q bilan boshlangan.
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION