Düzenli Ifadeler - 2 (Regular Expressions)
DÜZENLI IFADE OLUŞTURMA KURALLARI
Kriterimiz aranacak stringin başlangıç bölümünü tanımlasın (^)
ereg("^hello", "hello world!"); // TRUE
ereg("^hello", "i say hello world"); // FALSE
Kriterimiz aranacak stringin sonlanan bölümünü tanımlasın ($)
ereg("bye$", "goodbye"); // TRUE
ereg("bye$", "goodbye my friend"); // FALSE
Nokta karakteri herhangi bir karakteri temsil eder (.)
ereg(".", "cat"); // TRUE
ereg(".", ""); // FALSE Çünkü aranan stringin içerisinde hiç
karakter yok.
Karakter sayısını belirleyerek kriter tanımlama ({})
ereg(".{5}$", "12345"); // TRUE En az beş karakterli stringler
TRUE olarak dönecektir.
ereg("a{1,3}$", "aaa"); // TRUE Son karakter olarak en az bir
a olanlar TRUE döner.
ereg("a{1,3}$", "aaab"); // FALSE
ereg("a{3,}$", "aaaa"); // TRUE En az 3 tane a karakteri ile bitenler TRUE döner.
ereg("^a{3,5}$", "aaaaaa"); // FALSE En az 3, en çok 5 tane a karakterinden oluşan stringler TRUE döner.
Sıfır veya daha fazla tekrarlanacak karakterleri tanımlama (*)
ereg("t*", "tom"); // TRUE
ereg("t*", "fom"); // TRUE
Ikinci örnekte t karakteri olmamasına rağmen TRUE dönecektir.
En az bir veya daha fazla tekrarlanacak karakterleri tanımlama (+)
ereg("z+", "i like the zoo"); // TRUE
ereg("z+", "i like the zzzzzzoo!"); // TRUE
Hiç veya sadece bir kere tekrarlanacak karakterleri tanımlama (?)
echo ereg("c?", "cats are fuzzy"); // TRUE
C karakteri olmasaydı da TRUE dönecekti.
Boşluk karakterlerini tanımlama ([[:space:]])
Boşluk karakterlerini(white space, new line, tab) [[:space:]] ile belli kriterlere göre arayabiliriz. Boş karakterleri (” “) ile de aratmamız mümkün. Fakat bu koşulda sadece tek boşluk olanlar bize geri dönecek ve new line, tab karakterleri gözardı edilecektir.
ereg("Mitchell[[:space:]]Harper”, “Mitchell Harper”); // TRUE Tek boşluk karakteri arar.
ereg(”Mitchell[[:space:]]?Harper”, “MitchellHarper”); // Tek boşluk varsa veya boşluk yoksa TRUE döner.
Diğer eşleştirme grupları
[[:alpha:]] Herhangi bir harf
[[:digit:]] Herhangi bir rakam
[[:alnum:]] Herhangi bir harf veya rakam
[[:space:]] Herhangi bir boş karakter
[[:upper:]] Herhangi bir büyük harf
[[:lower:]] Herhangi bir küçük harf
[[:punc:]] Herhangi bir noktalama işareti
[[:xdigit:]] Herhangi bir Hexadecimal karakter. [0-9a-fA-F]
Grup şablonları tanımlama []
ereg("^[a-z]+$”, “johndoe”); // TRUE Sadece küçük harfli stringlere TRUE döner.
ereg(”^[A-Z]+$”, “JOHNDOE”); // TRUE Sadece büyük harfli stringlere TRUE döner.
ereg(”^[a-zA-Z]+$”, “JohnDoe”); // TRUE Sadece büyük ve küçük harfli stringlere TRUE döner.
ereg(”^[a-zA-Z]+$”, “John Doe”); // FALSE Çünkü boşluk karakteri içeriyor.
ereg(^[a-zA-Z]+[[:space:]]{1}[a-zA-Z]+$, “John Doe”); // TRUE
ereg(”^[0-9]+$”, “12345″); // TRUE Sadece rakamlardan oluşan stringler TRUE döner.
ereg(”^(John|Jane).+$”, “John Doe”); // TRUE John veya Jane ile başlayanlar TRUE döner.
ereg(”^[a-zA-Z0-9_]+$”, “aAz_”); // TRUE En az bir harf veya rakam veya _ içeren ifade TRUE döner.
Özel karakterleri düzenli ifadelerde kullanmak (Character Escaping)
Düzenli ifadeleri oluştururken birçok karakteri farklı anlamlarda kullanıyoruz. Az önce (John|Jane) örneğinde olduğu gibi. Eğer burada kullanılan parantez işaretlerini veya | işaretini arama kriteri olarak belirtmemiz gerekirse ne yapmamız gerek? Cevabı basit önlerine backslash koymamız yeterli.
ereg("^[a-zA-z]+\|[a-zA-z]+$”, “John|Jane”); // TRUE
ereg(”[\f\r\t\n]“, “John”); // FALSE Herhangi bir Form-feed (kağıt çıkart), Newline (yeni satır),
Return (satırbaşı) karakterini veya boşluğu (space) bulur.
Diğer önemli özel karakterler: ^, $, (, ), ., [, |, *, ?, +, \ ve {
\f Form-feed (kağıt çıkart) karakterini bulur.
\n Newline (yeni satır) karakterini bulur.
\r Return (satırbaşı) karakterini bulur.
\s Boşluk (space) bulur.
\S Yatay ve düşey sekme, kağıt-çıkart, yeni satır, satırbaşı ve boşluk dışındaki karakterleri bulur.
\t Yatay sekme (Tab) karakterini bulur.
\w Herhangi bir harf, rakam veya alt-çizgiyi bulur.
\W Harf, rakam ve alt-çizgi dışındaki karakteri bulur.
Istenilmeyen karakterleri tanımlamak
[^a-z] Küçük harf olmayan herhangi bir harfi bulur.
[^A-Z] Büyük harf olmayan herhangi bir harfi bulur.
[^\\\/\^] \ , / veya ^ dışında herhangi bir karakteri bulur.
[^\"\'] Çift ve tek tırnak dışında herhangi bir karakteri bulur.
ereg("^[^0-9][0-9]$”, “a1″); // TRUE
ereg(”^[^0-9][0-9]$”, “123″); // FALSE
KAYNAKLAR: Dev Articles, Php Manual, Phpfreaks
« Düzenli Ifadeler - 1 (Regular Expressions) | 16 Mark Twain Quotes »
Yorumlar
üzerinde şu anda okumakta olduğunuz 'Düzenli Ifadeler - 2 (Regular Expressions)' isimli yazı 13 Haz 2007 tarihinde, saat: 08:19 'de admin tarafından gönderilmiş.
Benzer yazıları Php kategorilerinden okuyabilirsiniz. Yazar ile irtibat kurmak için email gönderebilirsiniz. Yazıya yorum yapabilir ya da yapılan yorumları RSS 2.0 ile takibe alabilirsiniz.
Eklenen Son Yazılar
- Last.fm arayüzüne botoks yapıldı
- Nero’dan sıkılanlara, Ashampoo Burning Studio 8
- Avira AntiVir Türkçe destek vermeye başladı
- Soundtrack Pro ile Ortam Gürültüsünü Düzeltme
- Samsung i900 Omnia anons edildi
- Soundtrack Pro ile Ses Seviyelerini Normalleştirme
- tadilator.com “usta aramayı kolaylaştıran site”
- HTC Touch Diamond Kutu İçeriği
- GittiGidiyor.com’un yaratıcılarından yeni bir proje; Cimri.com BETA olarak yayında
- hayrettinkaraca.com
Rastgele Yazılar
- Herkes neden ASUS'tan nefret ediyor?
- iPod touch parçalama
- Windows şifremi unuttum, nasıl geri alabilirim?
- HTC Touch Diamond Kutu İçeriği
- Flickr'da büyük protesto
- Düzenli Ifadeler - 1 (Regular Expressions)
- GittiGidiyor.com'un yaratıcılarından yeni bir proje; Cimri.com BETA olarak yayında
- Final Cut Pro Color Correction (Renk Düzeltmeleri)
Son Yorumlar
- Burak: yazdığın yazıyla ilgisiz olacak ama
- mocobain: çok teşekkürler.
- sandokan: eyvallah kardeşim ya çok makbüle
- Bahadir Eryigit: güzel makale, teşekkürler
Bağlantılar
- burak.blicca.com
- Klipistan
- birazkisisel.com
- blogohbe.com
- fanişeyler sözlük
- Hayrettin Karaca
- ixbir.com
- Mahkum.net
- mavigenc.com
- nettenye.com
- Ozan Kılıç
- TeknolojiHerseyim.com










bilgilendirici olmuş. tebrikler.