Normal İfade Nedir?
normal ifade veya düzenli ifadeler, bir desen eşleştirme işaretlemesidir programcılar metinde belirli kalıpları aramak için kullanın. Normal ifadeler, onları nasıl yapılandırdığınıza bağlı olarak hemen hemen her şeyi arayabilir; programcılar tarafından her yerde kullanılırlar çünkü bilgisayarların verileri hızlı bir şekilde sıralamasına ve aksi takdirde hatalara neden olabilecek saçmalıkları filtrelemesine yardımcı olmak için çok değerlidirler.
Normal ifadeler, özellikle programcı olmayanlar için korkutucu görünme eğilimindedir. Şuna bakın:
[a-zA-Z0-9_.+-]+@[a-zA-Z0-9_-]+\.[a-zA-Z0-9_.-]+
Gerçekçi olarak, aslında o kadar da kötü değil; bu, e-posta adresleriyle eşleşir. Göreceğiniz gibi, ifadeler tek tek karakterlere bölünebilir ve bunların hepsi programa neyi araması gerektiğini söyler.
Düzenli ifadeler neredeyse evrenseldir. aynı genel sözdizimi burada ve orada sadece küçük değişikliklerle tüm diller için geçerlidir. Bu kılavuz, hem Python hem de JavaScript'ten örnekler ve düz eski normal ifade içerir. Farklı bir dille çalışıyorsanız endişelenmeyin. Neredeyse her şey seçtiğiniz dil için de geçerli olacaktır.
Normal İfade Temelleri
Teknik olarak, normal ifadeler olarak kabul edilemeyecek pek çok şey yoktur, çünkü gerçek metin dizileri gerçekten basit olanlardır. Normal bir ifade olarak 'abcde' kullanacak olsaydınız, programlama dili tam olarak bu dizeyi arardı.
Bakılacak ilk daha dinamik eşleşen karakter '.' karakter. Bu bağlamda nokta karakteri bir joker karakterdir. Onunla arama yapıyorsanız, programınız bulduğu herhangi bir karakteri eşleşme olarak döndürür.
Peki ya gerçek bir nokta aramak istiyorsanız? Bu da zor değil. Sabit nokta kullanmak istediğinizde, önüne bir ters eğik çizgi ekleyin, şöyle: '\.'
Ters Eğik Çizgi Karakterleri
Yine de ters eğik çizgi burada çok daha fazla rol oynar. Büyük normal ifade karakterlerinin çoğu ters eğik çizgi içerir.

Birkaç örneğe bir göz atın:
- \d: 0'dan 9'a kadar olan rakamlar
- \w: "Kelime Karakterleri" harfleri, rakamları ve alt çizgi
- \s: Sekmeler, yeni satırlar ve normal boşluklar dahil olmak üzere boşluk karakterleri
Bunlardan herhangi biriyle büyük harf kullanırsanız, tersini alırsınız. Örneğin, '\D' size rakamlar dışında her şeyi verir.
sınıflar
ters eğik çizgi karakterleri iyiler ama yine de biraz katılar. Genel olarak, harfleri, sayıları veya birkaç özel karakteri eşleştirmek isteyeceksiniz.

Eşleştirilmesini istediğiniz karakterleri bir çift köşeli parantez '[]' içine yerleştirin, programınız bunlardan herhangi biriyle eşleşecektir. Buna regex sınıfı denir.
[abcd1234]
Yukarıdaki örnek hala verimsizdir. Bunun yerine, bir aralık belirtmek için kısa çizgi kullanabilirsiniz; örneğin, tüm küçük harfler:
[a-z]
Aralıkları da listeleyebilirsiniz. Aşağıdaki ifade tüm harf ve rakamlarla eşleşir:
[a-zA-Z0-9]
Kısa çizgiyi karakter grubunuza dahil edecekseniz, değerlendirilmesini önlemek için sonuna yapıştırın. Diğer özel karakterlerle de çalışır.
[a-zA-Z0-9_.+-]
Ters eğik çizgi karakterlerinde olduğu gibi, burada da ters sonuç alabilirsiniz. Onları sonuçlarınızdan hariç tutmak için sınıfınızın başına bir '^' koyun. Bu, sonuçlardan rakamları ve birkaç özel karakteri hariç tutacaktır:
[^0-9_+.-]
Gruplar
Gruplar, ifadenizi parçalara ayırmak için bir dizi parantez kullanır. Verileri gruplayarak programınızın onu hedeflemesine ve kullanmasına izin verirler. Bir program ' http://' bir web adresinden, bunu başarmak için normal ifade grupları kullanıyor. Normal ifade, belirli kriterleri hedeflemesine izin verir ve gruplar, bölümleri ayırmasına izin verir.

Gruplar ayrıca bir desen veya diğeri arasında seçim yapmanıza izin verir. Tek bir '|' kullanırlar ifadede "veya" olarak hareket etmek. Aşağıdaki ifade bunlardan herhangi biriyle eşleşecektir: .com, .org, .net, .edu veya .gov.
\.(com|org|net|edu|gov)
niceleyiciler
Niceleyiciler tam olarak kulağa nasıl geliyorsa öyledir. Aradığınız bir karakterin miktarını ifadeye söylerler. Bunlar mevcut niceleyicilerdir:
- *: Sıfır veya daha fazla
- +: Bir veya daha fazla
- ?: Sıfır veya bir
- {3}: Parantez içindeki miktar
Bu niceleyicilerden herhangi birini, miktarını belirtmek istediğiniz karakterin veya sınıfın sonuna yerleştirin. Bu örnek, standart yedi basamaklı telefon numaralarını arar:
\d{3}[.*-]\d{3}[.*-]\d{4}
Çapalar ve Sınırlar
Normal ifadeler, bir metin dizisi içindeki veya bir kelimenin etrafındaki konumlarına göre kalıpları aramanıza olanak tanır.

Bunlar birincil seçeneklerinizdir:
- ^: Bir dizenin başlangıcı
- $: Bir dizgenin sonu
- \b: Kelime sınırı (bir kelimenin başı veya sonu)
Yalnızca bir harfle başlayan dizeleri bulmak istiyorsanız, şunu deneyebilirsiniz:
^[a-zA-Z]
I ve T harflerini içeren sözcükleri değil, yalnızca "o" sözcüğünü bulmak istediğinizi varsayalım; kelime sınırlarını kullanacağınız yer burasıdır.
\b (i| I)t\b
Son düşünceler
Normal ifadeler, programlama yaparken sizi bir sürü baş ağrısından kurtarabilir. Bu makaledeki örneklerden herhangi birini gerçekleştirmek için mantık yazmaya çalıştığınızı hayal edin. Korkunç bir karışıklık olurdu. Onlarla rahat olduğunuzda, muhtemelen kendinizi normal ifadenin gücünden ve esnekliğinden gerçekten keyif alırken bulacaksınız.