JavaRush /Java Blogu /Random-AZ /Java-da müntəzəm ifadələr
terranum
Səviyyə
Milan

Java-da müntəzəm ifadələr

Qrupda dərc edilmişdir
RegExNormal ifadə mətnə ​​tətbiq oluna bilən bir növ nümunədir (String, Java-da). Java normal ifadələri uyğunlaşdırmaq üçün java.util.regex paketini təmin edir. Adi ifadələr Perl proqramlaşdırma dilinə çox bənzəyir və öyrənmək çox asandır. Normal ifadə ya mətnə ​​(onun bir hissəsinə) uyğun gəlir, ya da uyğun gəlmir. * Əgər normal ifadə mətn parçasına uyğun gəlirsə, biz onu tapa bilərik. ** Əgər nizamlı ifadə mürəkkəbdirsə, o zaman normal ifadənin hansı hissəsinin mətnin hansı hissəsinə uyğun gəldiyini asanlıqla anlaya bilərik.

İlk misal

Normal ifadə " [a-z] +" mətndəki bütün kiçik hərflərə uyğun gəlir. -dən inklüzivədək [a-z]hər hansı simvol deməkdir və "bir və ya daha çox" simvol deməkdir. Tutaq ki, “code 2 Learn java tutorial” sətrini təqdim edirik. Bunu Java-da necə etmək olar Əvvəlcə şablon yaratmalısınız: az+
import java.util.regex.*;
Pattern p = Pattern.compile([a-z]+);
matcherSonra diaqramda bir mesaj göndərərək mətn üçün yaratmalısınız :
Matcher m = p.matcher(“code 2 learn java tutorial”);
QEYD: Konstruktorlar da yoxdur Pattern, Matcherbiz onları sinif metodlarından istifadə edərək yaradırıq Pattern. Pattern Class:Sinif obyekti müntəzəm ifadənin təsvirini təşkil edir. Pattern sinfi heç bir ictimai konstruktor təmin etmir. Şablon yaratmaq üçün əvvəlcə ictimai statik metodlardan birini çağırmalısınız, sonra o, sinfin obyektini qaytarır Pattern. Bu üsullar arqument kimi müntəzəm ifadə qəbul edir. Matcher Class:Finder obyekti nümunəni şərh edən və giriş sətirində uyğun əməliyyatları yerinə yetirən mühərrikdir. Bir sinif kimi Pattern, Matcheronun ictimai konstruktorları yoxdur. Bir sinif obyektində Matchermetodu çağırmaqla obyekt əldə edirsiniz . Bu addımları tamamladıqdan sonra və indi bizdə sinif nümunəsi var , indi nümunənin tapılıb-tapılmadığını, əgər varsa, hansı mövqedə və s. Nümunə bütün sətirə uyğundursa doğru, əks halda yanlış qaytarır. Nümunə sətrin əvvəlinə uyğundursa doğru, əks halda yanlış qaytarır. naxış mətnin hər hansı hissəsinə uyğun gələrsə, doğru qaytarır. matcherPatternMatcher m m.matches()m.lookingAt()m.find ()

Uyğun tapmaq

Uğurlu uyğunluqdan sonra m.start() uyğun gələn ilk simvolun indeksini, m.end() isə sonuncu uyğun gələn simvolun indeksini, üstəgəl bir qaytaracaq. Əgər uğursuz cəhd edilibsə və heç bir uyğunluq tapılmasa , m.start()atacaqlarm.end()IllegalStateException
  • Bu RuntimeExceptionona görədir ki, onu tutmaq lazım deyil.
m.end()Son uyğun gələn simvolun indeksini üstəgəl bir qaytarmaq qəribə görünə bilər , lakin String.
  • Misal üçün,“Now is the time“.substring(m.start(), m.end())
eyni sətri qaytaracaq. Koda nəzər salaq:
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*

Əlavə üsullar

Əgər uyğunluq varsa, onda:
  • m.replaceFirst(replacement)yeni sətir qaytarır, burada nümunəyə uyğun gələn ilk alt sətir ilə əvəz olunacaqreplacement
  • m.replaceAll(replacement)yeni sətir qaytarır, burada naxışa uyğun gələn hər bir alt sətir əvəz olunacaq
  • m.find(StartIndex)göstərilən indeksdən başlayaraq növbəti uyğunluğu tapın
  • m.reset()şablonu sıfırlayır
  • m.reset(NewText)tapıcını sıfırlayır və ona yeni mətn verir (bəlkə String, StringBuffervə ya CharBuffer)

Adi ifadə sintaksisi

  • ^Xəttin əvvəlinə uyğun gəlir.
  • $Sətirin sonuna uyğun gəlir.
  • .Yeni sətirdən başqa hər hansı bir simvola uyğun gəlir. m seçimindən istifadə onu yeni sətirlə uyğunlaşdırmağa imkan verir.
  • [...]Mötərizədə hər hansı bir simvolla uyğun gəlir.
  • [^ ...]Mötərizədə olmayan hər hansı bir simvola uyğun gəlir.
  • \ABütün xətti başlayın.
  • \zBütün xəttin sonu.
  • \ZSon sətir terminatorundan başqa bütün xəttin sonu.
  • re*Əvvəlki ifadənin 0 və ya daha çox təkrarına uyğun gəlir.
  • re+Əvvəlki ifadənin bir və ya daha çox uyğunluğu.
  • re?0 və ya 1 əvvəlki ifadənin yerinə uyğun gəlir.
  • re{n}Tam uyğun gəlir N Əvvəlki ifadənin baş vermə sayı.
  • re{n,}Əvvəlki ifadənin N və ya daha çox təkrarına uyğun gəlir.
  • re{n, m}Əvvəlki ifadənin ən azı n və ən çox m halına uyğun gəlir.
  • a|ba və ya b uyğun gəlir.
  • (re)Daimi ifadələr qrupu və tapılan mətni yadda saxlamaq.
  • (?: re)Tapılan mətni xatırlamayan müntəzəm ifadələr qrupları.
  • (?> re)Heç bir geri dönüşü olmayan müstəqil nümunəyə uyğun gəlir.
  • \wHərf və rəqəmlərə uyğun gəlir [a-zA-Z_0-9].
  • \WBunlar hərflər və ya rəqəmlər deyil.
  • \sBoşluqlara uyğun gəlir. [\t\n\r\f] ilə bərabərdir.
  • \SBoşluq simvolları deyil.
  • \dRəqəmlərə uyğun gəlir. [0-9] ilə bərabərdir.
  • \DRəqəmlərə uyğun gəlmir.
  • \GSon matçın nöqtəsinə uyğun gəlir.
  • \nYeni sətirə uyğun gəlir.
  • \bSöz sərhədində uyğun gəlir.
  • \BSöz sərhədində deyil.
  • \n, \t, etc.Yeni sətir, karetanın qaytarılması, nişan və s. simvollar.
  • \Q\E-dən əvvəl bütün simvolları sitat gətirin.
  • \E\Q ilə başlayan sitat bitir.
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION