logo

Java Regex'i

Java Regex'i veya Normal İfade bir API'dir dizeleri aramak veya değiştirmek için bir model tanımlayın .

Parola ve e-posta doğrulama gibi dizelerdeki kısıtlamayı tanımlamak için yaygın olarak kullanılır. Java regex eğitimini öğrendikten sonra, normal ifadelerinizi Java Regex Test Aracı ile test edebileceksiniz.

Java Regex API, 1 arayüz ve 3 sınıf sağlar java.util.regex paket.

java.util.regex paketi

Matcher ve Pattern sınıfları Java düzenli ifade olanağı sağlar. Java.util.regex paketi, normal ifadeler için aşağıdaki sınıfları ve arayüzleri sağlar.

  1. MatchResult arayüzü
  2. Eşleştirici sınıfı
  3. Desen sınıfı
  4. PatternSyntaxException sınıfı
Java Regex API'si

Eşleştirici sınıfı

Şunu uygular: Maç Sonucu arayüz. Bu bir normal ifade motoru bir karakter dizisi üzerinde eşleştirme işlemlerini gerçekleştirmek için kullanılır.

HAYIR.YöntemTanım
1boole eşleşmeleri()düzenli ifadenin kalıpla eşleşip eşleşmediğini test edin.
2boole bul()kalıpla eşleşen sonraki ifadeyi bulur.
3boolean find(int start)Verilen başlangıç ​​numarasından itibaren kalıpla eşleşen bir sonraki ifadeyi bulur.
4Dize grubu()eşleşen alt diziyi döndürür.
5int başlangıç()eşleşen alt dizinin başlangıç ​​dizinini döndürür.
6niyet etmek()eşleşen alt dizinin bitiş dizinini döndürür.
7int grupSayısı()eşleşen alt dizinin toplam sayısını döndürür.

Desen sınıfı

O düzenli ifadenin derlenmiş versiyonu . Regex motoru için bir model tanımlamak için kullanılır.

HAYIR.YöntemTanım
1Statik Desen derlemesi (String regex)verilen normal ifadeyi derler ve Desenin örneğini döndürür.
2Eşleştirici eşleştirici (CharSequence girişi)verilen girdiyi modelle eşleştiren bir eşleştirici oluşturur.
3statik boole eşleşmeleri (Dize normal ifadesi, CharSequence girişi)Derleme ve eşleştirici yöntemlerin birleşimi olarak çalışır. Düzenli ifadeyi derler ve verilen girişi kalıpla eşleştirir.
4String[] split(CharSequence girişi)verilen giriş dizesini, verilen modelin eşleşmeleri etrafında böler.
5IP dizgesi()regex modelini döndürür.

Java Normal İfadeleri Örneği

Regex örneğini Java'da yazmanın üç yolu vardır.

 import java.util.regex.*; public class RegexExample1{ public static void main(String args[]){ //1st way Pattern p = Pattern.compile('.s');//. represents single character Matcher m = p.matcher('as'); boolean b = m.matches(); //2nd way boolean b2=Pattern.compile('.s').matcher('as').matches(); //3rd way boolean b3 = Pattern.matches('.s', 'as'); System.out.println(b+' '+b2+' '+b3); }} 
Şimdi Test Edin

Çıktı

 true true true 

Düzenli ifade . Örnek

. (nokta) tek bir karakteri temsil eder.

 import java.util.regex.*; class RegexExample2{ public static void main(String args[]){ System.out.println(Pattern.matches('.s', 'as'));//true (2nd char is s) System.out.println(Pattern.matches('.s', 'mk'));//false (2nd char is not s) System.out.println(Pattern.matches('.s', 'mst'));//false (has more than 2 char) System.out.println(Pattern.matches('.s', 'amms'));//false (has more than 2 char) System.out.println(Pattern.matches('..s', 'mas'));//true (3rd char is s) }} 
Şimdi Test Edin

Regex Karakter sınıfları

HAYIR.Karakter SınıfıTanım
1[ABC]a, b veya c (basit sınıf)
2[^abc]a, b veya c dışında herhangi bir karakter (olumsuzlama)
3[a-zA-Z]a'dan z'ye veya A'dan Z'ye, dahil (aralık)
4[a-d[m-p]]a'dan d'ye veya m'den p'ye: [a-dm-p] (birleşim)
5[a-z&&[def]]d, e veya f (kesişme)
6[a-z&&[^bc]]a'dan z'ye, b ve c hariç: [ad-z] (çıkarma)
7[a-z&&[^m-p]]a'dan z'ye, m'den p'ye değil: [a-lq-z](çıkarma)

Normal İfade Karakter sınıfları Örnek

 import java.util.regex.*; class RegexExample3{ public static void main(String args[]){ System.out.println(Pattern.matches('[amn]', 'abcd'));//false (not a or m or n) System.out.println(Pattern.matches('[amn]', 'a'));//true (among a or m or n) System.out.println(Pattern.matches('[amn]', 'ammmna'));//false (m and a comes more than once) }} 
Şimdi Test Edin

Regex Niceleyicileri

Niceleyiciler bir karakterin oluşum sayısını belirtir.

Normal ifadeTanım
X?X bir kez ortaya çıkıyor ya da hiç olmuyor
X+X bir veya daha fazla kez ortaya çıkıyor
X*X sıfır veya daha fazla kez ortaya çıkıyor
X{n}X yalnızca n kez ortaya çıkıyor
X{n,}X n veya daha fazla kez ortaya çıkıyor
X{y,z}X en az y kez fakat z'den daha az kez meydana gelir

Normal İfade Karakter sınıfları ve Niceleyiciler Örneği

 import java.util.regex.*; class RegexExample4{ public static void main(String args[]){ System.out.println('? quantifier ....'); System.out.println(Pattern.matches('[amn]?', 'a'));//true (a or m or n comes one time) System.out.println(Pattern.matches('[amn]?', 'aaa'));//false (a comes more than one time) System.out.println(Pattern.matches('[amn]?', 'aammmnn'));//false (a m and n comes more than one time) System.out.println(Pattern.matches('[amn]?', 'aazzta'));//false (a comes more than one time) System.out.println(Pattern.matches('[amn]?', 'am'));//false (a or m or n must come one time) System.out.println('+ quantifier ....'); System.out.println(Pattern.matches('[amn]+', 'a'));//true (a or m or n once or more times) System.out.println(Pattern.matches('[amn]+', 'aaa'));//true (a comes more than one time) System.out.println(Pattern.matches('[amn]+', 'aammmnn'));//true (a or m or n comes more than once) System.out.println(Pattern.matches('[amn]+', 'aazzta'));//false (z and t are not matching pattern) System.out.println('* quantifier ....'); System.out.println(Pattern.matches('[amn]*', 'ammmna'));//true (a or m or n may come zero or more times) }} 
Şimdi Test Edin

Regex Meta Karakterleri

Düzenli ifade meta karakterleri kısa kod olarak çalışır.

Normal ifadeTanım
.Herhangi bir karakter (sonlandırıcıyla eşleşebilir veya eşleşmeyebilir)
D[0-9]'dan kısa herhangi bir rakam
D[^0-9]'un kısaltması olan herhangi bir rakam olmayan
S[ x0Bf ] kısaltması olan herhangi bir boşluk karakteri
S[^s]'nin kısaltması olan, boşluk olmayan herhangi bir karakter
İçinde[a-zA-Z_0-9]'un kısaltması olan herhangi bir kelime karakteri
İÇİNDEKelime olmayan herhangi bir karakter, [^w] kısaltması
BBir kelime sınırı
BKelime olmayan bir sınır

Normal İfade Meta Karakterleri Örneği

 import java.util.regex.*; class RegexExample5{ public static void main(String args[]){ System.out.println('metacharacters d....');\d means digit System.out.println(Pattern.matches('\d', 'abc'));//false (non-digit) System.out.println(Pattern.matches('\d', '1'));//true (digit and comes once) System.out.println(Pattern.matches('\d', '4443'));//false (digit but comes more than once) System.out.println(Pattern.matches('\d', '323abc'));//false (digit and char) System.out.println('metacharacters D....');\D means non-digit System.out.println(Pattern.matches('\D', 'abc'));//false (non-digit but comes more than once) System.out.println(Pattern.matches('\D', '1'));//false (digit) System.out.println(Pattern.matches('\D', '4443'));//false (digit) System.out.println(Pattern.matches('\D', '323abc'));//false (digit and char) System.out.println(Pattern.matches('\D', 'm'));//true (non-digit and comes once) System.out.println('metacharacters D with quantifier....'); System.out.println(Pattern.matches('\D*', 'mak'));//true (non-digit and may come 0 or more times) }} 
Şimdi Test Edin

Normal İfade Soru 1

 /*Create a regular expression that accepts alphanumeric characters only. Its length must be six characters long only.*/ import java.util.regex.*; class RegexExample6{ public static void main(String args[]){ System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'arun32'));//true System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'kkvarun32'));//false (more than 6 char) System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'JA2Uk2'));//true System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'arun$2'));//false ($ is not matched) }} 

Şimdi Test Edin

Normal İfade Soru 2

 /*Create a regular expression that accepts 10 digit numeric characters starting with 7, 8 or 9 only.*/ import java.util.regex.*; class RegexExample7{ public static void main(String args[]){ System.out.println('by character classes and quantifiers ...'); System.out.println(Pattern.matches('[789]{1}[0-9]{9}', '9953038949'));//true System.out.println(Pattern.matches('[789][0-9]{9}', '9953038949'));//true System.out.println(Pattern.matches('[789][0-9]{9}', '99530389490'));//false (11 characters) System.out.println(Pattern.matches('[789][0-9]{9}', '6953038949'));//false (starts from 6) System.out.println(Pattern.matches('[789][0-9]{9}', '8853038949'));//true System.out.println('by metacharacters ...'); System.out.println(Pattern.matches('[789]{1}\d{9}', '8853038949'));//true System.out.println(Pattern.matches('[789]{1}\d{9}', '3853038949'));//false (starts from 3) }} 
Şimdi Test Edin

Java Regex Bulucu Örneği

 import java.util.regex.Pattern; import java.util.Scanner; import java.util.regex.Matcher; public class RegexExample8{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); while (true) { System.out.println('Enter regex pattern:'); Pattern pattern = Pattern.compile(sc.nextLine()); System.out.println('Enter text:'); Matcher matcher = pattern.matcher(sc.nextLine()); boolean found = false; while (matcher.find()) { System.out.println('I found the text '+matcher.group()+' starting at index '+ matcher.start()+' and ending at index '+matcher.end()); found = true; } if(!found){ System.out.println('No match found.'); } } } } 

Çıktı:

 Enter regex pattern: java Enter text: this is java, do you know java I found the text java starting at index 8 and ending at index 12 I found the text java starting at index 26 and ending at index 30