Java İle RegEx işlemleri Regular Expressions
Birçok string ifadenin bazı string ifadelerle eşleşmesi gerekmektedir. Fakat bunları tek tek tanımlaka çok karmaşık bir iştir. Bunun kolay yolu olan java.util.regex sınıfını kullanırız.Bu Java nın bize sağladığı kolaylıklardan biridir.
Regex ile düzenli string ifadeler sağlayabiliriz. güzelliğine rağmen yavaş bir işleyişi vardır. Hız için ilk başta Pattern olayını yapıp sonra Compile ederiz ve ardından Match ederiz.
Pattern : Düzen
Compile : Derleme
Match : Eşleştirme
Aşağıda bir Pattern.matches örneği vardır . Pattern.matches bir döngü ile birlikte çağırdığımızdadizi içerisinde 'd' ile başlayan terimleri çağırmış oluyoruz....Ayrıca bununla eşleştirmede yapmış oluyoruz. Gördüğünüz gibi birinci terimleri 'd' harfi ile eşleştirme yaptık...
Not : Bu programın çıktı sonuçları bizlere Boolean olarak dönecektir. Yani eşleşme varsa true; yoksa false olarak dönecektir.
import java.util.regex.Pattern;
public class Program {
public static void main(String[] args) {
// Denemek istediğimiz terimler
String[] dizi= { "dag", "deniz", "cam", "Kod" };
// Regex ile kontrol ettiğimiz alan
for (String input : dizi) {
boolean cikti = Pattern.matches("d.+", dizi);
System.out.println(cikti);
}
}
}
Program çıktısı
true
true
false
true
Regex ile yapılmak istenen d harfi bir karakterdi...
.+ işaretinden sonra gelen yerden önce olacak olan alanı belli etmiş olduk... Pattern.compile ve Matcher nesneleri : Şimdi ise Regex işlemlerinin daha hızlı halini öğreneceğiz. Şimdi Düzenli bir string oluşturmak için Pattern.compile kullanacağız.
Şimdi matcher() fonksiyonunu çağıracaz ve oda bize Matcher sınıfının içeriğini döndürecek. Eşleşmeleri kontrol edecek ve eğer eşleşme varsa bize true döndürecek. Burdan anlaşılıyor ki matcher fonksiyonuda bizlere Boolean değişken döndürüyor...
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Program {
public static void main(String[] args) {
// Verilen formatı derleme alanı. Yani buraya göre kontrol yapılacak
Pattern eslesme = Pattern.compile("sayidd");
// şimdi eşleşmeyi kontrol etmesi için Matcher hazırladık
Matcher kontrol = eslesme.matcher("sayi12");
if (kontrol.matches()) {
System.out.println(true);
}
// ve eşleşme varsa veya yoksa sonuc olan boolean değişkenimizi döndürdük.
kontrol = eslesme.matcher("say456");
if (kontrol.matches()) {
System.out.println(true);
}
}
}
Programın Çıktısı
true
false
Eşleştirme ayarlarımız :
sayi : Eşleşme ifadesi sayi ile başlamalı dedik
dd iki tane daha karakter gelecek dedik
Bu şekilde birincisi true ikincisi false döndü...
Javada Regex fonksiyonları string ifadeleri almak için gruplama işlemlerinide kullanabilir. Burda konumsal değerler kullanılır.Yani ifadelerin karakterlerine göre bir çağırma işlemi yapılır. Aşağıdaki örnekte ilk olarak bir Regex metni tamamlayalım ve ardında onu eşleşme ile çağıralım. Daha sonra onları regex ile çağıralım...
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Program {
public static void main(String[] args) {
Pattern p= Pattern.compile("(d+)-(d+)"); // Kullanacağımız Regex düzenini oluşturduk
// String ifade üzerindeki eşleşmeyi bulduk
Matcher m = p.matcher("1234-5678");
// Ve eğer eşleşme varsa ekranda göster dedik
if (m.matches()) {
String ilk = m.group(1);
String ikinci = m.group(2);
System.out.println(ilk);
System.out.println(ikinci);
}
}
}
Program Çıktısı
1234
5678
Düzen - Expression
(d+) Bir grupta fazladan bir karakter
- Birtane eksik karakter
İsimlendirilen Gruplar: İsimlerle string ifadeleri çok kolay bir şekilde gruplandırabiliriz. İsimlendirilen grupları köşeli parantez ile ayarlayabiliriz. Ondan sonra onu isimlerle çağırabiliriz.
Şimdi Bununla ilgili bir örnek yapalım
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Program {
public static void main(String[] args) {
// İsimlendirilen gruplar
Pattern p = Pattern.compile("(?..)x(?..)");
Matcher m = p.matcher("ThexKod");
// Eşleşmeleri kontrol et
// ... sonrada onları isimleriyle çağırabilirsiniz
if (m.matches()) {
String ilk = m.group("birinci");
String iki = m.group("ikinci");
System.out.println(ilk);
System.out.println(iki);
}
}
}
Program Çıktısı
The
Kod
Pattern
(?..) brinci adındaki grubun adı
x aradaki x harfi
(?..) ikinci adındaki grubun adı
Çift Tırnaklı Düzenler: String ifadeler ("TheKodProgram") Şeklinde olacak şekilde algılanır. Java Programdada bu şekilde çalışır...
Burak Hamdi Tufan
İyi Çalışmalar
Comments