Ana sayfaya dön

# Düzenli İfadeler

Bu sayfa, düzenli ifadelere çok kısa bir giriş niteliğindedir. Düzenli ifadeler temelde bütün bir kalıp eşleştirme dilini temsil ettiğinden, hiçbir şekilde kapsamlı değildir. Daha derine inmek isterseniz, internette bununla ilgili bir ton bilgi bulabilirsiniz; sadece 'düzenli ifade eğitimi' veya 'düzenli ifade girişi' veya bunun gibi bir şey arayın.

## Tüm Microsoft Excel dosyalarıyla eşleşiyor: `.*\.xlsx?`

Düzenli ifadelerde (genellikle "regex" olarak kısaltılır), belirli karakterlerin özel bir anlamı vardır. Örneğin, nokta (`'.'`) Tam olarak bir bilinmeyen karakter anlamına gelir. Dolayısıyla, örneğin, `hallo` veya `hello` gibi dizelerle eşleştirmek için `h.llo` düzenli ifadesini, aynı zamanda `hzllo` veya `h8llo` ifadesini kullanabilirsiniz.

Diğer bir özel karakter, "sıfır veya daha fazla kez tekrarlanan önceki karakter" anlamına gelen yıldız işaretidir (`'*'`). Dolayısıyla, `hello*` düzenli ifadesini girerseniz, şu dizeler eşleşir: `hell`, `hello`, `helloo`, `hellooo`, vb.

Bu kuralların bir sonucu olarak, nokta ve yıldız işareti bir araya getirilirse, rastgele bir karakter dizisiyle eşleşeceklerdir. Örneğin, `gen.*ion` düzenli ifadeyle eşleşir: `genion`, `generalization`, `generation`, `gentrification`, vb.

Yıldız işaretine benzer özel bir karakter, "önceki karakter, sıfır kez veya tam olarak bir kez" anlamına gelen soru işaretidir (`'?'`). Ayrıca, "önceki karakter orada olabilir veya olmayabilir" şeklinde yeniden ifade edebilirsiniz. Yıldız işareti gibi, bir nokta ile birleştirilebilir. Bu nedenle, `hell.?` düzenli ifadesi şu şekilde eşleşir: `hell`, `hello`, `hells`, `hell4`, vb.

Nokta ve yıldız işareti gibi karakterlerin özel bir anlamı olduğundan, onları tam anlamıyla eşleştirmek istiyorsanız, onlardan kaçmanız gerekir. Bu, onlardan önce başka bir özel karakter olan ters eğik çizgi (`'\'`) ile yapılır. Ters eğik çizginin gerekli olduğu tipik bir durum, bir dosya adındaki noktayla eşleştirmektir. Örneğin, tüm dosyaları `license.txt` dosya adıyla eşleştirmek için, yalnızca `license\.txt` yerine `license.txt` — düzenli ifadesini kullanmanız gerekir, ikincisi, örneğin, `license-txt` ile de eşleşir.

Tüm bunları bir araya getirirsek, tüm Microsoft Excel dosyalarıyla eşleşen bir düzenli ifade yazabiliriz, örneğin: `.*\.xlsx?`. Bu düzenli ifade temelde şunu söyler: Keyfi bir karakter dizisi, ardından bir gerçek nokta, ardından "xls", ve sonunda isteğe bağlı bir "x" vardır.

## Bir basamak dizisiyle eşleştirme: `journal\d+\.doc`

"journal" ile başlayan ve bir zaman damgasıyla biten tüm Microsoft Word dosyalarını şu şekilde eşleştirmek istediğinizi varsayalım: "journal2007.doc". Dahası, istemediğiniz şey "journalism.doc" gibi dosyalarla eşleşmektir.

`journal.*\.doc` gibi bir düzenli ifade burada çalışmaz çünkü "journalism.doc" ile de eşleşir. Çözüme giden ilk adım, noktayı `[0-9]` veya `\d` ile değiştirmektir, her ikisi de tam olarak *bir rakamla*eşleşir. `[0-9]` ifadesi aslında `\d` den daha genel bir gösterimdir, çünkü örneğin `4`, `5` ve `6` rakamlarını eşleştirmek için `[4-6]` yazabilirsiniz. Harfler için bile işe yarar: `[m-p]`, m'den p'ye kadar tüm küçük harflerle eşleşir.

Bu nedenle, `\d` yi bir yıldız işaretiyle birleştirirsek, "journal2007.doc" ile eşleşecek ancak "journalism.doc" ile eşleşmeyen `journal\d*\.doc` düzenli ifadesini yazabiliriz. Ancak bekleyin, bu tam olarak doğru değil: Yıldız işaretinin "önceki karakter, sıfır veya daha fazla kez tekrarlanan" anlamına geldiğini hatırlayın. Bu durumda, "journal" den sonra sıfır basamak istemiyoruz, en az bir — istiyoruz, aksi takdirde düzenli ifade "journal.doc" dosyasıyla da eşleşecektir.

İşte sizin için başka bir özel karakter: artı sembolü (`'+'`) "bir veya daha fazla kez tekrarlanan önceki karakter" anlamına gelir. Bu nedenle düzenli ifademizin son sürümü: `journal\d+\.doc`