Kategoriler
Programlama

Regular Expression (Düzenli İfadeler)

Otomasyon süreçlerinin olmazsa olmazı düzenli ifadeler için yazılımcının en büyük yardımcılarından birisidir desem sanırım itiraz edecek olmaz. Başlangıçta öğrenmesi karmaşık gibi görünse de desen oluşturma konusunu bir kez anladığınızda vazgeçilmeziniz oluyor.

Bu makalemde ilk başta bir düzenli ifade yazarken kullanacağınız desenleri oluşturmanızı sağlayacak karakterleri anlatacağım. Şimdiki planım daha sonra programlama dilleri için ayrı ayrı düzenli ifadelerin kullanım şekillerini, fonksiyon ve metotlara detaylıca değindiğim ayrı makaleler yazmak.

Başlamadan önce düzenli ifadelerin büyük/küçük harf duyarlı olduğunu bilmelisiniz.


[] ve -

Köşeli parantezler arasında yazılan karakterleri arar.
işareti/sembolü aralık belirtmek için kullanılır.

[abc] =>
         a       : 1 eşleşme
         ab      : 2 eşleşme
         hello   : Eşleşme yok

 [a-c] => [abc]
 [a-f] => [abcdef]
 [a-dl-o] => [abcdlmno]
 [1-6] => [123456]
 [a-fk] => [abcdefk]
 [1-68] => [1234568]

^ (Klavye : Shift + 3)

Bu karakterin düzenli ifadelerde 2 farklı kullanımı vardır;

Köşeli parantez içinde ([]) belirli karakterleri dışlamak için kullanılır.

[^abc]  =>  abc dışındaki karakterler
[^a-d]  =>  abcd dışındaki karakterler
[^0-9]  =>  rakam olmayan karakterler

Başlangıç karakterini belirtmek için kullanılır.

^e  =>  e       : 1 eşleşme
         eba     : 1 eşleşme
         sel     : Eşleşme yok

 ^el =>  e       : Eşleşme yok
         ela     : 1 eşleşme

.

Nokta her hangi bir karakteri ifade eder.

..  =>  a       : Eşleşme yok
         ab      : 1 Eşleşme
         abc     : 1 Eşleşme
         abcd    : 2 Eşleşme

$

Son karakteri ifade eder.

e$  =>  e       : 1 eşleşme
         abe     : 1 eşleşme
         sel     : Eşleşme yok
 el$ =>  e       : Eşleşme yok
         el      : 1 eşleşme
         sel     : 1 eşleşme

*

Kendisinden önceki karakterin olmaması ya da bir veya birden fazla kez tekrarlanmasını kontrol eder.

hel*o   =>  heo     : 1 eşleşme
             helo    : 1 eşleşme
             helllo   : 1 eşleşme
             helio   : Eşleşme yok
             heio    : Eşleşme yok

+

Bir karakterin en az bir defa olması gerektiği ifade edilir. Kendisinden önceki karakter bir veya daha fazla kez tekrarlanmasını kontrol eder.

hel+o   =>  heo     : Eşleşme yok
            helo    : 1 eşleşme
            helllo  : 1 eşleşme

?

Bir karakterin olmaması yada sadece bir kez olmasını kontrol eder.

hel?o   =>  heo     : 1 eşleşme
            helo    : 1 eşleşme
            hello   : Eşleşme yok

{}

Karakter sayısını kontrol eder.

al{2}   = a karakterinden sonra l karakteri 2 kez tekrarlanmalıdır.

al{2}   =>  al   : Eşleşme yok
            all : 1 eşleşme
al{2,3} = a karakteri arkasına l karakteri en az 2, en fazla 3 kez bulunmalıdır.

al{2,3} =>  al      : Eşleşme yok
            all     : 1 eşleşme
            alll    : 1 eşleşme
            allll   : Eşleşme yok
[0-9]{2,4}  =>  en az 2 en fazla 4 basamaklı bir sayı

            =>  8       : Eşleşme yok
            =>  12      : 1 eşleşme
            =>  684     : 1 eşleşme
            =>  5864    : 1 eşleşme

|

Alternatif belirtmek için kullanılır. Alternatiflerden birinin gerçekleşmesi gerekir.

a|b     = "a" ya da "b"

         =>  cde     : Eşleşme yok
         =>  ade     : 1 eşleşme
         =>  acdbea  : 3 eşleşme

()

Gruplama yapmak için kullanılır.

(a|b|c)yz   = "a", "b", "c" karakterlerinden her hangi birinin ardından "yz" gelmelidir.

             =>  ayz     : 1 eşleşme
             =>  byz     : 1 eşleşme
             =>  cyz     : 1 eşleşme
             =>  dyz     : Eşleşme yok
             =>  axz     : Eşleşme yok

\

Kendisinden sonra gelen $, * gibi özel regex karakterlerinin bir karakter olarak algılanması için kullanılır.

a\$     = metin içerisinde "a$" ifadesini bir metin olarak sorgular.

\A

Kendisinden sonra gelen karakter ya da karakter dizesini, metin başında sorgular.

\Athe    = dize (string) "the" ile mi başladı?

\Z

Kendisinden önce gelen karakter ya da karakter dizesini, metnin sonunda sorgular.

the\Z    = dize (string) "the" ile mi bitiyor?

\b

Bir karakter ya da karakter dizesini kelimelerin en başında ya da en sonunda sorgular. \A ve \Z den farkı bu işlemi kelime bazlı yapmasıdır.

\bthe    = kelime "the" ile mi başlıyor?
the\b    = kelime "the" ile mi bitiyor?

\B

Bir karakter ya da karakter dizesinin kelimenin en başında ya da en sonunda olmaması durumunu sorgular. \b‘nin değili olarak düşünülebilir.

\Bthe    = kelime "the" ile başlamamıyor mu?
the\B    = kelime "the" ile bitmiyor mu?

\d

[0-9] deseni ile aynı anlama gelir. Dize içerisindeki rakamları ifade etmekte kullanılır.


\D

[^0-9] deseni ile aynı anlama gelir. Dize içerisindeki rakam olmayan karakterleri ifade etmekte kullanılır.


\s

Boşluk (space) karakterleri ifade etmek için kullanılır.


\S

Boşluk dışındaki karakterleri ifade etmek için kullanılır.


\w

Alfabetik karakterler, rakamlar ve alt çizgi (_) karakterini temsil eder.


\W

Alfabetik karakter, rakam ya da alt çizgi (_) dışındaki karakterleri ifade eder.


Umarım işinize yarar.

Yazar Muhammet ŞAFAK

1992 İstanbul doğumluyum. 2008 yılından beri profesyonel olarak PHP geliştiriyorum. Her ne kadar ağırlıklı olarak PHP üzerinde çalışsam da C, C++, Python, Java programlama dillerini de kullanıyorum.

Bir Cevap Yazın