17 Temmuz 2013 Çarşamba

Özel Diziler


Boşluk Karakterinin Yerini Turan Dizi: \s

Bu ifade karakter dizimizdeki boşluk karakterini bulmamızı sağlar.

import re
language=["python programlama","django web programlama","php web programlama","Android"]
for i  in language:
sonuc=re.search("[A-Za-z]+\s[A-Za-z]+",i)
if sonuc:
print sonuc.group()

kodlarını çalıştırdığımızda bizi vereceği karakter dizileri aşağıdaki gibidir;

python programlama
django web
php web

Gördüğünüz gibi bize burada boşluk ifadesinin kullanıldığı karakter dizileri geri döndürüldü.

Ondalık Sayıların Yerini Tutan Dizi: \d

Bu ifade karakter dizimizdeki ondalık sayı karakterini bulmamızı sağlar.
Örneği önceki derslerimizde şöyle bir ifade kullanıyorduk

karakter_dizisi=re.search("[0-9][A-Za-z]")

şeklinde ifade kullanmıştık.Buradaki amaç sayı ile başlayan ve harf karakterleriyle devam eden karakter dizilerini bulmaktı. İşte kodumuz tam burada öne çıkıyor.

version=["php5","python 2","python3","CSS 3","HTML5"]
for i in version:
sonuc = re.search("[A-Za-z]+\d+",i)
if sonuc:
print sonuc.group()

yukarıdaki kodumuz bize sonu sayı ile biten karakter dizilerini verecektir.

php5
python3
HTML5

Gördüğünüz gibi sonu sayısal ifade olan karakter dizilerimizi kolaylıkla bulduk.
Ama diyelim ki biz "CSS 3" bulmak istiyoruz.Küçük bir değişiklik ile onuda kolaylıkla bulabilir.

for i in version:
sonuc = re.search("[A-Za-z]+\s\d+",i)
if sonuc:
print sonuc.group()

kodunu çalıştırdığımızda bize çıktı olarak

python 2
CSS 3

2 çıktı verecektir.Burada dikkat edilmesi gereken kod => sonuc = re.search("[A-Za-z]+\s\d+",i)
Çünkü bu kodun içindeki boşluk(\s) dizisini sayısal ifade(\d) dizisinden sonra yazarsak, önce sayısal ifade arayacak sonra boşluk ifadesini arayacak.Fakat bizin karakter dizilerimiz içinde böyle bir karakter dizisi bulunmadığı için sonuç boş dönecektir.Bunu denemek için

for i in version:
sonuc = re.search("[A-Za-z]+\d\s+",i)
if sonuc:
print sonuc.group()

kodunu çalıştırarak sonucu görebilirsiniz.

Alfanümerik Karakterlerin Yerini Tutan Özel Dizi: \w

Bu ifade karakter dizimizdeki alfanümerik karakterleri ve "_" karakterini bulmamızı sağlar.

alfanumerik = "yukonit12_$"
print re.search("\w*",alfanumerik).group()

Yukarıdaki kodumuzu çalıştırdığımızda bize alfanumerik olmayan bir karaktere kadar olan alfanumerik karakter dizisini verdi.
Cümle biraz karışık gibi oldu ama bir sonraki örnekte daha iyi anlaşılacağını umuyorum.Bu kodumuzun çıktısı;

yukonit12_


Diğer bir örnek olarak şu kodlarımızı yazalım.

alfanumerik="yukonit12_python_$_php_%_asp"
print re.search("\w*",alfanumerik).group()

Kodlarımız bunlar şimdi bu kodlarımızı çalıştıralım ve sonucu görelim.

yukonit12_python_

Gördüğünüz gibi yukarıda bahsettitğim " bize alfanumerik olmayan bir karaktere kadar olan alfanumerik karakter dizisi " olayı
umarım burada daha iyi anlaşılmıştır.

Dersimizin sonuna gelmeden önce şu soruyu sorabiliriz: Peki bu harfleri büyük yazarsak ne olur?

"\s" ifadesi boşluk karakterinin yerini bulmamızı sağlarken, "\S" ifadesi boşluk karakteri olmayan karakter dizilerini bulmamızı sağlar.
"\d" ifadesi ondalık sayı karakterinin yerini bulmamızı sağlarken, "\D" ifadesi ondalık sayı karakteri olmayan karakter dizilerini bulmamızı sağlar.
"\w" ifadesi alfanümerik ve "_ "karakterinin yerini bulmamızı sağlarken, "\W" ifadesi alfanümerik olmayan ve " _ " karakteri bulunmayan karakter dizilerini bulmamızı sağlar.

Bunlarla ilgili örnekleri size bırakıyorum.Hatta bu dersteki örnekler üzerinde denerseniz sizin içi daha faydalı olur.
Bir sonraki derste görüşmek üzere...

Hiç yorum yok:

Yorum Gönder