Normal 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:
a
z
+
import java.util.regex.*;
Pattern p = Pattern.compile(“[a-z]+”);
matcher
Sonra 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
,
Matcher
biz 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
,
Matcher
onun ictimai konstruktorları yoxdur. Bir sinif obyektində
Matcher
metodu ç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.
matcher
Pattern
Matcher 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()
atacaqlar
m.end()
IllegalStateException
- Bu
RuntimeException
ona 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
, StringBuffer
və 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.
\A
Bütün xətti başlayın.
\z
Bütün xəttin sonu.
\Z
Son 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|b
a 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.
\w
Hərf və rəqəmlərə uyğun gəlir [a-zA-Z_0-9].
\W
Bunlar hərflər və ya rəqəmlər deyil.
\s
Boşluqlara uyğun gəlir. [\t\n\r\f] ilə bərabərdir.
\S
Boşluq simvolları deyil.
\d
Rəqəmlərə uyğun gəlir. [0-9] ilə bərabərdir.
\D
Rəqəmlərə uyğun gəlmir.
\G
Son matçın nöqtəsinə uyğun gəlir.
\n
Yeni sətirə uyğun gəlir.
\b
Söz sərhədində uyğun gəlir.
\B
Sö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.
GO TO FULL VERSION