Düzenli İfadeler -2-

Yazar: Unknown Tarih: 19 Şubat 2012 Pazar Yorum: 2
Metakarakterler
Bu başlık altında python'da metakarakter olarak adlandırılan []  .  *  +  ?  {}  ^  $  |  ()  \
bu karakterleri göreceğiz.Giriş olarak kısa bir örnek yapalım

>>> import re
>>> liste=["turgay","turgut","özkan","özcan","özhan","kemal","dündar"]
>>> for i in liste:
    nesne=re.search("öz[chk]an",i)
    if nesne:
        print (nesne.group())

özkan
özcan
özhan

şeklinde bir örnek ile [] işareti ile belli bir harf aralıklarını içeren isimleri bulduk.Şimdi
bun karakterlerini işleyelim.

[] Köşeli Parantez
Giriş kısmındada bağsettiğimiz gibi belli bir karakteri yada belli bir aralığı araştırır.

Şimdi önceki yazımda anlattığım match metoduyla bir örnek yapalım...

>>> import re
>>> x=["1php","2python","perl","java","3jquery","4css","c/c++"]
>>> for y in x:
    if re.match("[0-9]",y):
        print (y)

1php
2python
3jquery
4css

yaptığımız örnek,sayı ile başlayan karakter dizilerini match metoduyla bulmak.
Eğer istersek if re.match("[0-9]",y): ifadesini if re.match("[A-Z]",y): şeklinde değiştirerek
har ile başlayan karakter dizilerini ekrana yazdırabiliriz.Ama tabi bu büyük hat aramsı yapacağı için
bizim örneğimizde çalışacak şekli if re.match("[a-z]",y): şeklindedir.

. Nokta
Bu metakarakteri yeni satır karakteri dışındaki karakterlerin yerini tutar.

>>>liste=['sema', 'sena', 'sefa', 'semra', 'sene']
>>> for i in liste:
    if re.match("se.a",i):
        print(i)

sema
sena
sefa

yukarıdaki örnek bir dizi oluşturup,dizi için de "se" ile başlayıp "a" ile biteni veya devam edeni
bulmasını istedik.Burada .nokta m,n,f karakterlerinin yerini tutarak işlemi gerçekleştirdi.
Eğer şöyle bir örnek yaparsanız

>>> liste=["ahmet","mehmet","samet",]
>>> for i in liste:
    if re.match(".met",i):
        print(i)

şeklindeki örnek hiç bir çıktı vermeyecek.Çünkü ilk örnektede olduğu gibi bu metakarakter tek
karakterin yerini tutar.

* Yıldız
Bu metakarakter, kendisinden önce gelen bir ifade kalıbını 0 veya daha fazla karakterde eşleştirir.
Yani .nokta karakterinin çoğulu gibi düşünebiliriz.

>>> liste=["at","sat","saat","kat","tat","strafor"]
>>> liste.append("strafor")
>>> for i in liste:
    if re.match("sa*t",i):
        print (i)

sat
saat
strafor

Bu örnekte yaptığımızı açıklamak gerekirse,s ile başlayan karakter dizilerini bulmak diyebiliriz.
Burada s ile başlayıp a ile devam eden karakter dizilerini buldu.Ama strafor ne alaka diyebilirsiniz.
Tanımda da dediğimiz gibi 0 veya daha fazla eşleştirme yapar.