Bazı düzenli ifade örneklerini aşağıya ekledim.
Düzenli İfadelerde Kullanılan Özel Karakterler Sınıfları
Özel karakter sınıfları belli bir kümedeki karakterlerle eşleşirler.
Basit bir şekil aşağıda.
Harfler
[a-z] aralığında boşluk karakteri (space) de aralığa dahildir.
Sayılar
\d ile bir sayı karakteri ifade edilir.
\D ile sayı olmayan bir karakter ifade edilir.
Örnekte "046 55.5" şeklindeki bir telefon numarası non-digit karakterler silinerek "046555" haline getiriliyor.
Regex.Replace(value, @"\D", "")
Boşluk
\s ile boşluk (space) karakteri ifade edilir. Anladığım kadarıyla \t (tab) karakteri de boşluk olarak kabul ediliyor.
Boşluk olmayanlar
\S ile space olmayan karakterler ifade edilir. Örneğin (\S+)\s+(.+?) ile space olmayan bir grup, sonra bir veya daha fazla boşluk, sonra ise yakalamak istediğimiz grubu buluruz. Space olmayan karakterleri [^\\s] şeklinde de ifade edebileceğimizi sanıyorum.
Kelime
\w ile bir word (kelime) ifade edilir. [A-Za-z0-9_] ifadesinin kısa halidir. string.replaceAll java doesn't work with lookaround regex? örneğinde \w ifadesine { karakterinin dahil edilmediği görülebilir.
Kelime Olmayanlar
\W \w kısaltmasının tam tersini yapar. Yani alfanümerik olmayan imla işareti gibi "," ";" "." gibi karakterleri bulur.
Çapalar (Anchor)
Çapalar ile düzenli ifade moturu bir sonraki karakteri işlemez. Ama koşulun tutup tutmadığını değerlendirir.
\B \b kısaltmasının tam tersini yapar
^ ile string'in başı belirtilir. Multiline modu kullanılmıyorsa cümle içinde \n karakterini dikkat almaz.
Quantifiers
Grubun Uzunluğunu Kontrol Etme Örnekleri
0 ila 11 tane arasında olması gerektiğini belirtmek için \d{0,11} yazıyoruz. Tamı tamına 11 tane olması için \d{11} yazıyoruz. Bir başka örnek ise burada.
Eğer bir quantifier bir kaç defa tekrar edecekse örneğin, parantez içine alma gerekebilir. Örnek:
Düzenli ifadeler default olarak greedy çalışırlar. Örneğin \s+ ile azami eşleşme yapılırken \s+? ile reluctant çalışması sağlanır. Yani ? işareti greedy çalışmayı engeller.
Escape yapılması gereken özel karakterler
".*true.*" örneğinde string içinde true kelimesinin geçip geçmediği geçtiği bulunabilir.
Bir veya birkaç karakterin içerildiğini bulmak
.*[x-z].* örneğinde x-z arasındaki (her ikisi de dahil) herhangi bir karakterin içerildiği kontrol edilir.
Bir ifade ile başlanılmadığını bulmak
"^[^\\d].*" örneğinde string'in sayı ile başlayıp başlamadığı bulunabilir
İçeriği Yakalama Örnekleri
Bir ifade ile başlamak ve geri kalanı yakalamak
Düzenli İfadelerde Kullanılan Özel Karakterler Sınıfları
Özel karakter sınıfları belli bir kümedeki karakterlerle eşleşirler.
Basit bir şekil aşağıda.
Harfler
[a-z] aralığında boşluk karakteri (space) de aralığa dahildir.
Sayılar
\d ile bir sayı karakteri ifade edilir.
\D ile sayı olmayan bir karakter ifade edilir.
Örnekte "046 55.5" şeklindeki bir telefon numarası non-digit karakterler silinerek "046555" haline getiriliyor.
Regex.Replace(value, @"\D", "")
Boşluk
\s ile boşluk (space) karakteri ifade edilir. Anladığım kadarıyla \t (tab) karakteri de boşluk olarak kabul ediliyor.
Boşluk olmayanlar
\S ile space olmayan karakterler ifade edilir. Örneğin (\S+)\s+(.+?) ile space olmayan bir grup, sonra bir veya daha fazla boşluk, sonra ise yakalamak istediğimiz grubu buluruz. Space olmayan karakterleri [^\\s] şeklinde de ifade edebileceğimizi sanıyorum.
Kelime
\w ile bir word (kelime) ifade edilir. [A-Za-z0-9_] ifadesinin kısa halidir. string.replaceAll java doesn't work with lookaround regex? örneğinde \w ifadesine { karakterinin dahil edilmediği görülebilir.
Kelime Olmayanlar
\W \w kısaltmasının tam tersini yapar. Yani alfanümerik olmayan imla işareti gibi "," ";" "." gibi karakterleri bulur.
Çapalar (Anchor)
Çapalar ile düzenli ifade moturu bir sonraki karakteri işlemez. Ama koşulun tutup tutmadığını değerlendirir.
\B \b kısaltmasının tam tersini yapar
^ ile string'in başı belirtilir. Multiline modu kullanılmıyorsa cümle içinde \n karakterini dikkat almaz.
Quantifiers
Grubun Uzunluğunu Kontrol Etme Örnekleri
0 ila 11 tane arasında olması gerektiğini belirtmek için \d{0,11} yazıyoruz. Tamı tamına 11 tane olması için \d{11} yazıyoruz. Bir başka örnek ise burada.
Eğer bir quantifier bir kaç defa tekrar edecekse örneğin, parantez içine alma gerekebilir. Örnek:
^(\d{1}){2} // iki defa tekrar etsin
Düzenli ifadeler default olarak greedy çalışırlar. Örneğin \s+ ile azami eşleşme yapılırken \s+? ile reluctant çalışması sağlanır. Yani ? işareti greedy çalışmayı engeller.
Escape yapılması gereken özel karakterler
- { karakteri aslıda "kaç tane"anlamına gelen kısaltma olduğu için - örneğin \d{2}'nin escape ile işaretlenmesi gerekir. Dolayısıyla \d\\{2 şeklinde yazılmalı.
".*true.*" örneğinde string içinde true kelimesinin geçip geçmediği geçtiği bulunabilir.
Bir veya birkaç karakterin içerildiğini bulmak
.*[x-z].* örneğinde x-z arasındaki (her ikisi de dahil) herhangi bir karakterin içerildiği kontrol edilir.
Bir ifade ile başlanılmadığını bulmak
"^[^\\d].*" örneğinde string'in sayı ile başlayıp başlamadığı bulunabilir
İçeriği Yakalama Örnekleri
Bir ifade ile başlamak ve geri kalanı yakalamak
Hiç yorum yok:
Yorum Gönder