PHP Düzenli ifadeler -1 (Regular Expressions) Nedir?
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.
PHP (sürüm 5.3 ve üzeri) preg_
, fonksiyon ailesi aracılığıyla Perl tarzı düzenli ifadeleri destekler . Neden Perl tarzı düzenli ifadeler? Perl ( Pratik Çıkarma ve Rapor Dili ), normal ifadeler için entegre destek sağlayan ilk yaygın programlama diliydi ve normal ifadeleri güçlü desteği ve olağanüstü metin işleme ve işleme yetenekleri ile tanınır.
Giriş
Bu Malalede göstereceğim desenleri deneyebilmek için anlık işlemler yapabilen ve her regex
çalışmamızda tarayıcımızın bir tabında açık olması gereken bu siteleri mutlaka yer imlerinize ekleyin.
Düzenli ifadeler dünyasına derinlemesine girmeden önce, yaygın olarak kullanılan PHP'nin yerleşik kalıp eşleme fonksiyonlara kısa bir genel bakışla başlayalım.
Fonksiyon | Açıklama |
---|---|
preg_match() | Düzenli bir ifade eşleşmesi gerçekleştirin. |
preg_match_all() | Genel bir düzenli ifade eşleşmesi gerçekleştirin. |
preg_replace() | Düzenli ifade araması yapın ve değiştirin. |
preg_grep() | Desenle eşleşen giriş dizisinin öğelerini döndürür. |
preg_split() | Düzenli bir ifade kullanarak bir dizeyi alt dizelere böler. |
preg_quote() | Bir dizede bulunan düzenli ifade karakterlerini alıntılayın. |
Sözdizimi:
/....../flags
Regex
yukarıda görülen bir yapıda yazılır. / başlangıç karakteri ile / bitiş karakteri arasına pattern, bitiş karakterinden sonra ise bayraklar (flags) yazılır.
preg_match()
fonksiyonu, ilk eşleşmeyi bulduktan sonra aramayı durdurur, oysa preg_match_all()
fonksiyonu dizenin sonuna kadar aramaya devam eder ve ilk eşleşmede durmak yerine tüm olası eşleşmeleri bulur.
Escape Karakterler
Escape Karakterler sadece düzenli ifadelerde değil bir çok programlama lisanında da özel anlama sahip olan ve genelde görüntülenemeyen karakterleri temsil etmek için kullanılırlar.
Düzenli ifadenin içinde özel bir anlam verilmiştir karakterler şunlardır:
Özellikle unutulmaması gereken bir kural ( \) ters bölü (backslash) karakterinin Escape karakterlerde özel bir anlamı olduğudur. ( \) özel karakteri bir çok karakterin özel olup-olmadığını belirler. Örneğin:
İşleç | Açıklama |
---|---|
\ | çeşitli kullanımları olan genel önceleme karakteri |
^ | konu başlangıcıyla eşleşme işleci (satır kipinde veya çok satırlı kipte) |
$ | konu sonuyla eşleşme işleci (satır kipinde veya çok satırlı kipte) |
. | (öntanımlı olarak) satırsonu hariç herhangi bir karakterle eşleşme işleci |
[ | Karakter sınıfı tanımı başlatma işleci |
] | Karakter sınıfı tanımı bitirme işleci |
| | VEYA işleci |
( | Alt kalıp başlatma işleci |
) | Alt kalıp bitirme işleci |
? | "(" işlecinin anlamını genişletir; 0 veya 1 kere eşleşir, ayrıca açgözlülüğe son verilir. (bkz. Yineleme) |
* | 0 veya daha fazlasıyla eşleşme işleci |
+ | 1 veya daha fazlasıyla eşleşme işleci |
{ | En küçük/En büyük ile eşleşme başlatma işleci |
} | En küçük/En büyük ile eşleşme bitirme işleci |
Karakter Sınıfları
Bir karakter yapıyı çevreleyen köşeli parantezlere karakter sınıfı denir, örn: [abc]. Bir karakter sınıfı her zaman, belirtilen karakterler listesinden tek bir karakterle eşleşir; bu, ifadenin [abc] yalnızca a, b veya c karakteriyle eşleştiği anlamına gelir.
Olumsuzlanmış karakter sınıfları, köşeli ayraçlar içinde bulunanlar dışında herhangi bir karakterle eşleşen de tanımlanabilir. Olumsuzlanmış bir karakter sınıfı, bu [^abc] gibi açılış köşeli ayracın hemen ardından bir şapka (^) sembolü yerleştirilerek tanımlanır.
[0-9] gibi bir karakter sınıfının içindeki tire (-) karakterini kullanarak da bir karakter aralığı tanımlayabilirsiniz. Karakter sınıflarının bazı örneklerine bakalım:
RegExp | Açıklama |
---|---|
[abc] | A, b veya c karakterlerinden herhangi biriyle eşleşir. |
[^abc] | A, b veya c dışında herhangi bir karakterle eşleşir. |
[a-z] | Küçük harfli a'dan küçük z'ye kadar herhangi bir karakterle eşleşir. |
[A-Z] | Büyük harften büyük z harfine kadar herhangi bir karakterle eşleşir. |
[a-Z] | Küçük a'dan büyük Z'ye kadar herhangi bir karakterle eşleşir. |
[0-9] | 0 ile 9 arasında tek bir rakamla eşleşir. |
[a-z0-9] | A ve z arasında veya 0 ile 9 arasında tek bir karakterle eşleşir. |
Köşeli ayraçların içinde kalan kısım karakter sınıfı adını alır. Bir karakter sınıfı içinde özel anlamı olan işleçler şunlardır:
Köşeli ayraçların içindeki düzenli ifade işleçleri (karakter sınıfları)
İşleç | Açıklama |
---|---|
\ | genel önceleme karakteri |
^ | sınıfın ilk karakteri olduğu takdirde sınıfla eşleşmeme işleci |
- | karakter aralığı işleci |
Önceden Tanımlanmış Karakter Sınıfları
Rakamlar, harfler ve boşluklar gibi bazı karakter sınıfları o kadar sık kullanılır ki bunlar için kısayol adları vardır. Aşağıdaki tablo bu önceden tanımlanmış karakter sınıflarını listeler:
RegExp | Açıklama |
---|---|
. | Yeni satır dışında herhangi bir tek karakterle eşleşir \n. |
\d | herhangi bir rakam karakteriyle eşleşir. [0-9] aynı. |
\D | Rakam olmayan herhangi bir karakterle eşleşir. [^0-9] aynı. |
\s | Herhangi bir boşluk karakteriyle (boşluk, sekme, yeni satır veya satır başı karakteri) eşleşir. [\t\n\r] aynı |
\S | Boşluk olmayan herhangi bir karakterle eşleşir. [^\t\n\r] aynı. |
\w | Herhangi bir kelime karakteriyle eşleşir (a'dan z'ye, A'dan Z'ye, 0'dan 9'a ve alt çizgi olarak tanımlanır). [a-zA-Z_0-9] aynı |
\W | Sözcük olmayan herhangi bir karakterle eşleşir. İle aynı[^a-zA-Z_0-9] |
\pL | u değiştiricisini kullanırken UTF-8'de kodlanmış bir harf |
Tekrar Sayaçları
Önceki bölümde, çeşitli modlarda tek bir karakteri nasıl eşleştireceğimizi öğrendik. Peki ya birden fazla karakterle eşleşmek istiyorsanız? Örneğin, p harfinin bir veya daha fazla örneğini içeren kelimeleri veya en az iki p içeren kelimeleri vb. Bulmak istediğinizi varsayalım. Nicelik belirteçlerinin devreye girdiği yer burasıdır. Nicelik belirteçleriyle, bir normal ifadedeki bir karakterin kaç kez eşleşmesi gerektiğini belirtebilirsiniz.
Aşağıdaki tablo, belirli bir modeli ölçmenin çeşitli yollarını listeler:
RegExp | Açıklama |
---|---|
p+ | P harfinin bir veya daha fazla oluşumuyla eşleşir. |
p* | P harfinin sıfır veya daha fazla oluşumuyla eşleşir. |
p? | P harfinin sıfır veya bir oluşumuyla eşleşir. |
p{2} | P harfinin tam olarak iki oluşumuyla eşleşir. |
p{2,3} | P harfinin en az iki oluşumuyla eşleşir, ancak p harfinin üçten fazla tekrarlanmamasıyla eşleşir. |
p{2,} | P harfinin iki veya daha fazla oluşumuyla eşleşir. |
p{,3} | P harfinin en fazla üç geçtiği yerde eşleşir |
Konum Çapaları
Bir satırın, sözcüğin veya dizenin başında veya sonunda eşleştirmek istediğiniz belirli durumlar vardır. Bunu yapmak için çapa kullanabilirsiniz. İki ortak bağlantı, dizenin başlangıcını temsil eden şapka (^) ve dizenin sonunu temsil eden dolar ($) işaretidir.
RegExp | Açıklama |
---|---|
^p | Satırın başındaki p harfiyle eşleşir. |
p$ | Satırın sonundaki p harfiyle eşleşir. |
\B | Kelime sınırı haricinde eşleşir. / \Ba\B /-> aaa |
\b | kelime sınırı, baştan ve sondan / a\b / -> aaa / \ba /->aaa |
Desen Değiştiriciler
Desen değiştirici, desen eşleşmesinin işlenme şeklini denetlemenizi sağlar. Desen değiştiricileri doğrudan normal ifadeden sonra yerleştirilir, örneğin, bir deseni büyük/küçük harf duyarlı olmayan bir şekilde aramak istiyorsanız, i değiştiricisini şu şekilde kullanabilirsiniz: /pattern/i
. Aşağıdaki tabloda, en sık kullanılan desen değiştiricilerinden bazıları listeler.
RegExp | Açıklama |
---|---|
i | Eşleşmeyi büyük/küçük harf duyarlı olmayan bir şekilde yapar. |
m | ^ ve $ davranışını, dize sınırı yerine yeni satır sınırıyla (örneğin, çok satırlı bir dize içindeki her satırın başlangıcı veya sonu) eşleşecek şekilde değiştirir. |
g | Global bir eşleşme gerçekleştirin, yani tüm oluşumları bulur. |
o | İfadeyi yalnızca bir kez değerlendirir. |
s | Satır başı hariç her şeyi ifade eden nokta karakterinin satır başını da ifade etmesini sağlar |
x | Netlik sağlamak için Düzenli ifadede (desendeki) boşlukları ve yorumları kullanmanıza izin verir. |
u | UTF-8 kodlaması kullanılır. (Türkçe karekterler için gerekli) |
Sınırlayıcılar
PCRE işlevlerini kullanırken, desenin sınırlayıcılar tarafından çevrelenmiş olması gerekir. Sınırlayıcı, alfasayısal olmayan, ters eğik olmayan, boşluk olmayan bir karakter olabilir. Geçerli bir sınırlayıcıdan önce önde gelen boşluk sessizce göz ardı edilir.
Genellikle kullanılan sınırlayıcılar eğik çizgiler (/), kare(hashtag) işareti (#) ve yaklaşık (tilde) işareti (~) olur. Aşağıda geçerli sınırlandırılmış desenlerin tümü verilmiştir.
/foo bar/ #^[^0-9]$# +php+ %[a-zA-Z0-9_-]%
Köşeli ayraç stili sınırlayıcılarının, kalıp içinde meta karakterler olarak kullanıldıklarında öncelenmesi gerekmez, ancak diğer sınırlayıcılarda olduğu gibi, değişmez karakterler olarak kullanıldıklarında bu sınırlayıcıların öncelenmesi gerekir.
Sınırlayıcının desen içinde eşleştirilmesi gerekiyorsa, ters eğik çizgi kullanılarak kaçınılması gerekir. Sınırlayıcı sık sık modelin içinde görünüyorsa, okunabilirliği artırmak için başka bir sınırlayıcı seçmek iyi bir fikirdir.
/http:\/\// #http://#
İşlemlerin öncelikleri
- Parantez --> ()
- Sayaçlar --> * + ? {}
- Seriler veya bağlayıcılar --> Kutular ^Yarın gelecek$
- Veya --> | (pipe işareti)
Diğer regex konular
- PHP Düzenli ifadeler -2 preg_match() Fonksiyon
- PHP Düzenli ifadeler -3 preg_match_all() Fonksiyonu
- PHP Düzenli ifadeler -4 preg_replace() Fonksiyon
- PHP Düzenli ifadeler -5 preg_filter() Fonksiyon
- PHP Düzenli ifadeler -6 preg_split() Fonksiyon
- PHP Düzenli ifadeler -7 preg_grep() Fonksiyonu
- PHP Düzenli ifadeler -8 preg_quote() Fonksiyonu
- PHP Düzenli ifadeler -9 Örnekler
- 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