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.

Not: PHP 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



Diğer regex konular

Lütfen konu haricinde soru sormayın cevaplanmayacaktır. Yorumunuz onaylandıktan sonra yayınlanacaktır. Lütfen Yukarıda ki mesajları okuyun tekrar aynı soruları sormayın.

7370

KATEGORİ
  • HTML
  • CSS
  • PHP
  • JQUERY
  • PHOTOSHOP
  • JavaScript
  • Web Dünyası
  • Linux
  • MİTHRİL FRAMEWORK
  • Laravel
  • Git
POPÜLER MAKALE
  • HTML LİNK(Bağlantı)EKLEME - LİNK VERME
  • HTML YAZI VE RESİM ORTALAMA
  • HTML RESME LİNK VERME
  • HTML DİV ve SPAN NEDİR?
  • HTML FORM OLUŞTURMA
  • HTML RESİM EKLEME
  • CSS (BOYUT) GENİŞLİK VE YÜKSEKLİK (Width-Height)
  • HTML KAYAN RESİM VE Marguee KULLANIMI
  • KALİTE KAYBETMEDEN RESİMLERİ BÜYÜTME
  • HTML ARKAPLANA MÜZİK EKLEME
ETİKET
WEBCEBİR © 2013 Tüm hakları saklıdır.