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.
- MatchResult arayüzü
- Eşleştirici sınıfı
- Desen sınıfı
- PatternSyntaxException sınıfı
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öntem | Tanım |
---|---|---|
1 | boole eşleşmeleri() | düzenli ifadenin kalıpla eşleşip eşleşmediğini test edin. |
2 | boole bul() | kalıpla eşleşen sonraki ifadeyi bulur. |
3 | boolean find(int start) | Verilen başlangıç numarasından itibaren kalıpla eşleşen bir sonraki ifadeyi bulur. |
4 | Dize grubu() | eşleşen alt diziyi döndürür. |
5 | int başlangıç() | eşleşen alt dizinin başlangıç dizinini döndürür. |
6 | niyet etmek() | eşleşen alt dizinin bitiş dizinini döndürür. |
7 | int 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öntem | Tanım |
---|---|---|
1 | Statik Desen derlemesi (String regex) | verilen normal ifadeyi derler ve Desenin örneğini döndürür. |
2 | Eşleştirici eşleştirici (CharSequence girişi) | verilen girdiyi modelle eşleştiren bir eşleştirici oluşturur. |
3 | statik 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. |
4 | String[] split(CharSequence girişi) | verilen giriş dizesini, verilen modelin eşleşmeleri etrafında böler. |
5 | IP 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 ifade | Tanı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 ifade | Tanı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 |
İÇİNDE | Kelime olmayan herhangi bir karakter, [^w] kısaltması |
B | Bir kelime sınırı |
B | Kelime 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