Kadir Kasim | Freelance Code Developer

kadir kasim


Yıldız Teknik Üniversitesi Mezunu

Matematik Mühendisi

Yazılımcı

California - Kütahya - İstanbul - Maryland güzargahında 29 yıllık göçebe bir yaşam

Kız labrador babası

Kitapsever keyif insanı

Güzel kadın ama asık yüzlü. Hep asık yüzlü oluruz ya da sırıtkan.

Yusuf Atılgan
Aylak Adam

Regex ( Regular expression ) belirli yazım kurallarına göre düzenlenmiş , yazı karakter setlerini tanımlayan ifadelerdir. Bir çok metin düzenleyici tarafından kullanılır. Programlama dillerinde de sıklıkla arama, değiştirme gibi işlemlerde kullanılır. Örneğin formlarda email adresi, kullanıcı adı, şifre gibi gelen bilgileri analiz ederken veya filtrelerken kullanılabilir. Veya Metinlerde değişiklik yapılmak istendiğinde kullanılabilir ki ; kullanımına dair örneği Seo Uyumlu Link Yapımı yazısında bulabilirsiniz.

PCRE veya ASCII kurallarına göre tanımlanabilmektedir. Örnek ile açıklamak gerekirse \w tanımı ile [A-Za-z0-9_] tanımı bize aynı alanı işaret eder. İkisinin de tanımladığı alan büyük ve küçük tüm amerikan alfabesi, 0 dan 9 a tüm numara setleri ve _ işaretidir. Aşağıdaki tabloda önemli bazı regex kurallarını bulabilirsiniz.

PCRE ASCII Açıklama
\w [A-Za-z0-9_] Alfanümerik Karakterler ile _
\W [^A-Za-z0-9_] Alfanümerik Olmayan Karakterler
\d [0-9] Rakamlar
\D [^0-9] Rakam olmayan Karakterler
\s [\t\r\n\v\f] Boşluk karakterlerı
\S [^\t\r\n\v\f] Boşluk olmayan Karakterler
[\x21-\x7E] Boşluk hariç basılabilen tüm karakterler
[\x20-\x7E] Boşluk dahil basılabilen tüm karakterler

İhtiyacımıza yönelik düzenli ifadeler oluştururken işimizi kolaylaştıran karakterlerden aşağıda başlıklar halinde bahsedelim.

+ Karakteri

Bu karakter kendisinden önce gelen değerin bir veya daha fazla olduğu durumları araştırır.

$deger = "çoook güzel bir yazı.."; $sorgu = "/ço+k/"; if (preg_match($sorgu, $deger, $sonuc)) { print $sonuc[0]; } /* Ekran çıktısı : çoook */

* Karakteri

Bu karakter kendisinden önce gelen değerin sıfır veya daha fazla olduğu durumları araştırır. Araştırdığı değer olmasada sonuç almak istenilen durumlarda tercih edilir.

$deger = "çoook güzel bir yazı.."; $sorgu = "/ça*/"; if (preg_match($sorgu, $deger, $sonuc)) { print $sonuc[0]; } /* Ekran çıktısı : ç */

^ Karakteri

Bu karakter eğer /^a/ şeklinde kullanılırsa başlangıç değerinin a olması gerekmektedir.

$deger = "çoook güzel bir yazı.."; $sorgu = "/^ç/"; if (preg_match($sorgu, $deger, $sonuc)) { print $sonuc[0]; } /* Ekran çıktısı : ç */ $deger = "çoook güzel bir yazı.."; $sorgu = "/^g/"; if (preg_match($sorgu, $deger, $sonuc)) { print $sonuc[0]; } /* Ekran çıktısı olmayacaktır.. */

Eğer /[^a]/ şeklinde köşeli parantez içerisinde kullanılırsa a harfi aranmıyor demektir.

$deger = "çoook güzel bir yazı.."; $sorgu = "/[^ç]/"; if (preg_match($sorgu, $deger, $sonuc)) { print $sonuc[0]; } /* Ekran çıktısı : o */

[ ] Köşeli Parantez

Köşeli parantez değerleri gruplara ayırmak için kullanılır. Mesela /No:[0123456789]/ dersek ilk karakterli No: olan sonraki ilk karakteri rakam olan değeri döndürürüz.

$deger = "çoook güzel bir yazı.."; $sorgu = "/ç[aeouı]/"; if (preg_match($sorgu, $deger, $sonuc)) { print $sonuc[0]; } /* Ekran çıktısı : ço */ $deger = "No:012301230"; $sorgu = "/No:[0123456789]/"; if (preg_match($sorgu, $deger, $sonuc)) { print $sonuc[0]; } /* Ekran çıktısı : No:0 */ $deger = "No:012301230"; $sorgu = "/No:[0123456789]+/"; if (preg_match($sorgu, $deger, $sonuc)) { print $sonuc[0]; } /* Ekran çıktısı : No: 012301230 */

$ Karakteri

Aranan değerin sonunu belirtmek için kullanılır.

$deger = "çoook güzel bir yazı.."; $sorgu = "/..$/"; if (preg_match($sorgu, $deger, $sonuc)) { print $sonuc[0]; } /* Ekran çıktısı : .. */

? Soru işareti

Sıfır veya bir karakteri bulur.

$deger = "çoook güzel bir yazı.."; $sorgu = "/ç?/"; if (preg_match($sorgu, $deger, $sonuc)) { print $sonuc[0]; } /* Ekran çıktısı : ç */

. Nokta işareti

Herhangi bir karakteri temsil eder sadece Enter değerini algılamaz. Birden fazla karakter için birden fazla . işareti kullanılmalıdır.

$deger = "çoook güzel bir yazı.."; $sorgu = "/b.r/"; if (preg_match($sorgu, $deger, $sonuc)) { print $sonuc[0]; } /* Ekran çıktısı : bir */ $deger = "çoook güzel bir yazı.."; $sorgu = "/b../"; if (preg_match($sorgu, $deger, $sonuc)) { print $sonuc[0]; } /* Ekran çıktısı : bir */

{ } Süslü Parantez

Karakter gruplama kullanılır. x{2,5} dendiğinde x harfinin en az 2 en fazla 5 tane olma durumunu araştırır.

$deger = "çoook güzel bir yazı.."; $sorgu = "/o{1,3}/"; if (preg_match($sorgu, $deger, $sonuc)) { print $sonuc[0]; } /* Ekran çıktısı : ooo */

Aşağıda gruplamada kullanılan pratik yöntemler bulunmaktadır.

/*/ {0,} Sıfır veya daha fazla
/+/ {1,} Bir veya daha fazla
/?/ {0,1} Sıfır veya bir

Tartışma Başlatmak İster Misiniz ?

Eposta adresiniz paylasılmayacaktır..

Daha Önceki Yazılar