Yeri geldikçe terminal komutlarında, PHP, JS, SQL ve R ifadelerinde, WordPress düzenlemelerinde, Google Analytics, Atom metin ve kod işlemlerinde… Özetle bir çok durumda gereksinim duyabileceğiniz (eğer biliyorsanız), bilmiyorsanız iş yapış süreçlerinizi önemli ölçüde etkileyebilecek bir içerikle devam ediyorum: Regex (Regular Expressions) Nedir?

Regular Expressions

Regular Expressions (Regex veya Regexp / Düzenli / Kurallı İfadeler) modern programlama dillerinin neredeyse tamamında yer bulan, aynı söz dizimine (syntax) sahip olan, genellikle harflerden olusan karakterler dizisinin (katar / string) belirtilen kurallar çerçevesinde kısa yoldan ve esnek bir biçimde belirlenmesini sağlayan bir yapıdır.

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ı.

Nasıl Çalışır?

İşlem aşamasında aranan katara (string) bir kalıp tanımı yapılır (atama). İşlemin ardından bu katarın eşlenikleriyle geri dönmesi beklenir. Bu yapı özel karakterler aracılığıyla sayesinde eşlenik bulma (search) veya yer değiştirme (replace) gibi olaylar hızlı ve etkili bir şekilde gerçekleşir. Eşlenik bulma ve yer değiştirme tanımlamaları için kullanılan özel karakterler ve anlamları şu şekilde açıklanabilir:

Regex Özel Karakter Tanımlamaları

Aşağıda özel karakterlerin işlevlerinin anlatımlarına ek olarak örneklerine de yer vereceğim. Bu örneklerin kullanımları için regex101.com ve regexr.com siteleri işinizi görecektir.

DigitalOcean sunucu işlemlerinde /root/.digitalocean_password dökümanında kayıtlı şifrelere erişim için örneğin şu pratik yolu izleyebiliriz.

cat /root/.digitalocean* | grep '.*_mysql_pass'

Meta Karakterler (Escaped Characters)

.

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.

Regex 2

$

Eşlendiği ifadenin sonunu belirtir. Boşluklar ve paragraf başındaki özel nesneler dikkate alınmaz. Örneğin paragraf sonundaki “iner$” ifadesini belirlemek bu şekilde mümkün olacaktır. Bu şekilde paragraf sonlarını bulup değiştirmek mümkün olmaktadır.

Regex 1

^

$” ifadesine ters olarak, eğer terim sadece paragraf başında ise aranılan ifadeyi bulur. Örnek olarak “^Sabahleyin” ifadesi “Sabah, Sabahleyin…” gibi ifadelere sınır belirtilmemişse eşleşmeye devam eder.

Regex 3

^ köşeli parantez [] içinde kullanıldığında kendisinden sonra belirtilen karakter veya grubun bulunmayacağını ifade eder.

*

Ö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.

Regex 5

[ ]

Köşeli parantezler, içindeki tüm karakterlerle eşlenir. Örnek olarak “S[ai]z” ifadesi “Saz” ve “Siz” ile eşlenir.

Regex ornek 4

[c1-c2]

Belirtilen aralığa göre (- ile) 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.

Regex ornek 5

[^c1-c2]

Belirtilen aralık harici bütün karakterlere eşlenir. Örnek olarak “[^123a-z]” ifadesi 1, 2, 3 sayıları ve bütün küçük harfler dışında bütün ifadelere eşlenir.

Regex ornek 6

( )

İfadeyi gruplandırır, gruplandırılmış ifadelerine denk gelen kalıpları (en fazla 9 kalıp) saklar.

Parantez içinde belirtilen karakterleri başvuru olarak tanımlar. İlk başvuruya “\1” ile, ikinci başvuruya “\2” gibi biçimlerde başvurulur.

Örneğin, metniniz 1988, 1980, 1999, 1898 ve 1919 tarihlerini içersin. Aramanız (8)9\1 düzenli ifadesini kullanıyorsa, “898” sonucu bulunur.

Regex 6

Parantezleri terimleri gruplamak için kullanabilirsiniz; örneğin “a(bc)?d” ifadesi “ad” veya “abcd” ifadelerini bulacaktır.

Regex 7

|

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.

Regex 8

+

Kendinden önce gelen ifadenin bir veya daha fazla kullanımına eşlenir. Örnek olarak “z+” ifadesi z, zz, zzz… ile eşlenir.

Regex 10

?

Kendinden önce gelen ifadenin 0 veya 1 tekrarıyla eşlenir.

Regex ornek 7

{ }

Kendinden önceki ifadenin belirlenen sayıda tekrarıyla eşlenir. Örneğin “a[0-5]{2}” ifadesi a harfi ile başlayıp yanında 0 ile 5 arasında 2 tane rakam olan, a12, a24, a14 gibi ifadelerle eşlenir.

Regex ornegi

{i,j}

Belirtilen sayıda tekrar önceki ifade bağlamında eşlenir. Örneğin “[0-9]{4,6}” ifadesi bütün 4, 5 veya 6 elemanlı sayı dizilerine eşlenir.

Regex ornek 0

Karakter Etiketleri

\d

[0-9] – herhangi bir rakam

\D

[^0-9] – rakam olmayan herhangi bir ifade

\w

[a-zA-Z0-9_] – türkçe harfler hariç, alfanümerik herhangi bir harf, rakam veya alt çizgi.

\W

[^a-zA-Z0-9_] – alfanümerik olmayan.

\s

[ \t\n\r\f] – herhangi bir boşluk karakteri

\S

[^ \t\n\r\f] – boşluk karakteri olmayan.

Kullanım olarak başlangıçta karışık görünebilir, ancak biraz pratikten sonra aslında kullanımının oldukça kolay ve işlevsel olduğu görülmektedir. Bir çok uygulama ve işlemde kullanılabildiği için pratik alanı oldukça geniştir. Kullanımına örnekler bağlamında hem ilgili hem de diğer konular içerisinde açıklamalar eklemeye devam edeceğim.

Leave a Reply