PHP Düzenli ifadeler -9 Örnekler
Genellikle "regex" veya "RegExp" olarak bilinen Normal İfadeler, metindeki kalıpları bulmak için kullanılan özel olarak biçimlendirilmiş metin dizeleridir. Düzenli ifadeler, etkili ve verimli metin işleme ve manipülasyonlar için günümüzde mevcut olan en güçlü araçlardan biridir. Örneğin, kullanıcı tarafından girilen isim, e-posta, telefon numarası vb. Gibi veri formatının doğru olup olmadığını doğrulamak, metin içeriği içinde eşleşen dizeyi bulmak veya değiştirmek için kullanılabilir.
Bu bölümde regex ile örnekler yapacağız.
Düzenli İfadelerin Kullanım Amacı
- Yoğun veri yığını içerisinden ihtiyaç duyulan bilginin çekilmesi,
- Kullanıcı tarafından girilen girdinin denetimi,
- Verilerin kullanım amacına uygun biçime sokulması.
Regex Meta Karakterler(ESCAPED CHARACTERS)
Aşağıdaki karakterlerin işlevlerini regexr.com sitesini kullanarak deneyebilirsiniz. Birden fazla karakteri kullanarak kendi isteğinize göre şekillendirebilirsiniz.
# i ve g değiştiricisi
Düzenli ifadeler varsayılan olarak büyük/küçük harfe duyarlıdır. /merhaba/ Düzenli ifadesinin /Merhaba/ düzenli ifadeden farklı olduğu anlamına gelir, çünkü yalnızca ilk ifade küçük harf 'm' ile başlarken ikincisi büyük 'M' ile başlar . Ancak bu davranışı , normal ifadenin kapanış sınırlayıcısından hemen sonra i değiştiricisini ekleyerek değiştirebiliriz. "g" değiştiricisinide belirtmezsek metinde ilk eşleşeni bulur durur. "g" ise tüm metni tarar.
ÖRNEK:
Tek bir karekteri seçme
Tek bir karekteri seçmek istediğimizde "g" değiştiricisini kullanmayın.
ÖRNEK:
Belirtilen Tüm karekterleri seçme
Tüm karekterleri seçmek için "g" değiştiriciyi kullanın.
ÖRNEK:
"+"
Kendinden önce gelen ifadenin bir veya daha fazla kullanımına eşlenir. Örnek olarak a+ ifadesi a, aa, aaa… ile eşlenir. Bu seçtiği karekterleri tek tek seçme değilde bir grup halinde seçer.
ÖRNEK:
"?"
Kendinden önce gelen ifadenin 0 veya 1 tekrarıyla eşlenir. Yani, olabilirde olmayabilirde demek.
ÖRNEK: "merhaba" ve "meraba" yazılışı farklı, aynı anlamlı iki kelime gelebilir; Ama ikisinide seçmek istiyoruz "h" harfinin önüne "?" işareti getirerek "h" harfi gelebilirde gelmeye bilirde demiş oluyoruz.
ÖRNEK:
"*"
Önünde bulunduğu karakterin 0 veya tekrarlarıyla eşlenir. .* ifadesi bütün karakterlere eşlenirken, a*t ifadesi "t, tt, at" ile eşlenir. "+" ve "?" işaretinin birleşimidir. opsiyonal olarak tekrar eden kelime varsa grup olarak seçer.
ÖRNEK:
"."
Sayfa ya da paragraf sonu dışındaki herhangi bir karakteri temsil eder. Örnek olarak "k.re" ifadesi "küre", "kare", "kore", "kere" ile eşlenecektir.
ÖRNEK:
ÖRNEK 2: Tüm harfleri grup olarak seçelim "+" özelliğini kullanalım.
ÖRNEK 3: Desenimiz şöyle olsun /Deniz./
"Denizi" ve "Denize" iki kelimeyide seçeçek burda "." yerine her tür karekter alabilir.
"\w"
[a-zA-Z0-9_]
Türkçe harfler hariç, alfanümerik herhangi bir harf, rakam veya alt çizgi.
ÖRNEK:
\W
[^a-zA-Z0-9_]
alfanümerik olmayan.
"\s"
[ \t\n\r\f]
herhangi bir boşluk karakteri seçer.
"S"
[^ \t\n\r\f] boşluk karakteri olmayanları seçer.
"\d"
[0-9]
herhangi bir rakam seçer.
"D"
[^0-9]
rakam olmayan herhangi bir karekteri seçer.
"^"
Şapka meta karakteri, dizenin başlangıcını gösterir.
"$"
Dolar meta karakteri, dizenin sonunu gösterir.
"[]"
Köşeli parantezler, içindeki tüm karakterlerle eşlenir. Örnek olarak S[eo]n ifadesi "Sen" ve "Son" ile eşlenir.
Parantezin içine yazılan a,b ve c harfleriyle eşleşir buraya istediğiniz harfi yazabilirsiniz.(Sayı da yazabilirsiniz)
"[c1-c2]"
Belirtilen aralığa göre eşleniklerin belirlenmesinde kullanılır. Örneğin [0-9]
ifadesi bütün rakamlar ile eşlenir. Birleşik ifadeye örnek olarak [A-Za-z]
ifadesi de bütün harflerle büyük küçük ayrımı yapmadan eşlenecektir.
"[^c1-c2]"
Şapka (^) sembolünün dizenin başlangıcını temsil ettiğini zaten öğrendik, ancak köşeli parantez içinde kullanıldığında karakter kümesinin olumsuzluğunu gösterir.
Örneğin, [a-z]
, a'dan z'ye kadar olan harf aralığı anlamına geliyorsa, köşeli parantez içinde şapka simgesi olan [^a-z]
yerine, küçük harf kümesinde olmayan her karakter anlamına gelir.
Birkaç örnek daha görelim:
ÖRNEK:
"|"
Veya/yada anlamındadır, belirtilen iki ifadeyle ayrı ayrı eşlenebilir. Örneğin k(a|u)le
ifadesi, "kale" ve "kule" ifadelerine eşlenir.
"()"
İfadeyi gruplandırmaya yarar. Ayrica gruplandırılmış ifadelerine denk gelen kalıpları saklar ve en fazla 9 kalıp saklayabilir.
ÖRNEK:
- /kitap/php/sayfa/
- /kitap/css/sayfa/
- /kitap/html/sayfa/
"\b"
\b meta karakteri, bir kelimenin başında veya sonunda bir eşleşme bulmak için kullanılır.
Aşağıdaki gibi bir kelimenin başındaki kalıbı arayın:
\bLO
Aşağıdaki gibi bir kelimenin sonundaki kalıbı arayın:
LO\b
Eşleşme bulunamazsa, null döndürür.
"\B"
Bir kelimenin başındaki veya sonundaki kalıbı aramaz, ortasında arar.
Düzenli ifadelerde niceleyiciler
"{}"
Bir karakter grubunun veya bir karakterin normal bir ifadede kaç kez tekrarlanabileceğini belirtmek için niceleyicileri kullanırız.
ÖRNEK: Bir kere tekralanan (.) karekterini bulun
ÖRNEK: Dört kere tekralanan (.) karekteri bulun.
Örnek: Şöyle, desen kullansak {1,}
bunun anlamı bir ve daha fazla tekrarlananı getir.
Örnek: Şöyle, desen kullansak {1,5}
bunun anlamı bir ve beş kez tekrarlananları getir.
Örnek: Şöyle, desen kullansak {0,5}
bunun anlamı sıfır ve beş kez tekrananları getir.
Lookahead (İleriye bak)
Lookahead
'ler Regex’ de bir ifadeyi takip eden başka ifadeler olup olmadığını kontrol etmek için kullanılır. Negative ve positive olmak üzere ikiye ayrılır.
(?!...)
- negative lookahead. Belirtilen bir ifade ile takip edilmeyen ifadeleri yakalamakta kullanılır.(?=...)
- positive lookahead. Positive Lookahead de adından da anlaşılacağı üzere, Negative Lookahead’in tam tersidir.
ÖRNEK: negative lookahead(İleriye olumsuz bak.) örnek verirsek, sonunda 'de olmayan php'leri seçin.
ÖRNEK: positive lookahead(İleriye olumlu bak.) örnek verirsek sonunda 'de olan php'leri seçin.
Lookbehind (Arkana bak)
Lookbehind
’ler bir ifadeden önce başka bir ifade olup olmadığını kontrol etmek için kullanılır. Negative ve Positive olmak üzere ikiye ayrılır.
(?<!...)
- negative lookbehind. Belirtilen ifade ile başlamayan ifadeleri kontrol etmek için kullanılır.(?<=...)
- positive lookbehind, Adından da tahmin edeceğiniz üzere, belirtilen ifade ile başlayan ifadeleri yakalamak için kullanılır.
ÖRNEK: "'de" ile başlamayan php'leri seçelim.
ÖRNEK: "'de" ile başlayan php'leri seçelim"
Diğer regex Konularin Linki
Emine Bekem 31/10/2022
yönetici 01/11/2022
<?php
$il='Ankara';
if($il=='Ankara' or $il=='ankara')
Echo 'EVET';
else
for($i=1;$i<=5; $i++){
echo 'HAYIR';
echo "<br>";
}
?>
- HTML
- CSS
- PHP
- JQUERY
- PHOTOSHOP
- JavaScript
- Web Dünyası
- Linux
- MİTHRİL FRAMEWORK
- Laravel
- Git
- React
- HTML LİNK(Bağlantı)EKLEME - LİNK VERME
- HTML YAZI VE RESİM ORTALAMA
- HTML RESME LİNK VERME
- HTML FORM OLUŞTURMA
- CSS YATAY MENÜ YAPIMI
- HTML RESİM EKLEME
- CSS (BOYUT) GENİŞLİK VE YÜKSEKLİK (Width-Height)
- HTML DİV ve SPAN NEDİR?
- HTML ARKAPLANA MÜZİK EKLEME
- KALİTE KAYBETMEDEN RESİMLERİ BÜYÜTME