21 Ocak 2013 Pazartesi

Düzenli İfadeler - 5



$ (Dolar)
Bir Önceki derste gördüğümüz ^(şapka) metakarakterinin ilk özelliğinin ters işlevine sahiptir.
Yani ^(şapka), karakter arama işlemini karakter topluluğunun başında yapıyordu, $(dolar)'da ise
aranacak karakter topluluğunun sonunda arama yapıyor.
Örnek verelim:

1.Örnek

>>> import re
>>> y=['deneme','söyleme','kaleme','makine','toplantı','kaşıntı','mırıntı']
>>> for i in y:
if re.search('me$',i):
print i


deneme
söyleme
kaleme

2.Örnek

>>> for i in y:
if re.search('e$',i):
print i


deneme
söyleme
kaleme
makine

3.Örnek

>>> for i in y:
if re.search('tı$',i):
print i


toplantı
kaşıntı
mırıntı


import re ile re kütüphanemizi eklemiş olduk.
1.örnekte sonu "me" ile biten kelimeleri buldurduk.
2.örnekte is sonu "e" ile biten kelimeleri buldurduk.
3.örnekte ise sonu "tı" ile biten kelimeleri buldurduk.


\ (Ters Bölme İşareti)
Bu metakarakter bildiğimiz kaçış dizisi ifadesidir.Bunu burada kullanmamızın sebebi ise özel karakterin
çıktısını alabilmek için.Örneğin az önceki konu olan $(dolar) işaretini el alalım.


>>>for i in liste:
if re.match('[0-9]+$',i):
print i

şeklinde bir kod yazarsek ekrana herhangi bir çıktı vermeyecek.Çünkü bizim sayı ile biten karakter dizisini
aradığımızı zannedecek, fakat bizim amacımız $(Dolar) fiyatlarını bulmak olduğu için yukarıdaki kodu
şöyle değiştiriyoruz:


>>> for i in liste:
if re.match('[0-9]+\$',i):
print i


10$
35$

Görüldüğü gibi istediğimiz sonuca ulaştık.

|(Dik Çizgi)
Bu metakarakterimizde birden falza düzenli ifadeyi eşleştirmemizde işimize yarıyor.Örneğin "de" ile başlayan ve "me" ile biten karakter dizilerini arayalım;


>>>y=['deneme','söyleme','kaleme','makine','toplantı','kaşıntı','mırıntı']
>>> for i in y:
if re.search('^de|me$',i):
print i


deneme
söyleme
kaleme

yada "ka" ile başlayan veya "ı" ile biten karakter dizilerini arayalım;


>>> for i in y:
if re.search('^ka|ı$',i):
print i


kaleme
toplantı
kaşıntı
mırıntı



ve son olarak bir örnek daha yaparak bu dersi sonlandıralım.

>>> import re
>>> import urllib
>>> url='http://www.pythondili.blogspot.com'
>>> f=urllib.urlopen(url)  //Bu kodu yazdıktan sonra biraz beklemeniz lazım çünkü programın siteye ulaşması biraz zaman(10sn) alıyor.
>>> for i in f:
nesne=re.search('.+',i)
if nesne:
print nesne.group()

Çıktı olarak "Python İle İp Bulma" yazımda verdiğim linki buldu: Kaynak


Bu son örneğimizde pythondili.blogspot.com içindeki yazıların içinde verilen linkleri aratmaktayız.
Bu kodun url='http://www.pythondili.blogspot.com' kısmını url='http://pythondili.blogspot.com/2013/01/duzenli-ifadeler-4.html' olarak değiştirdiğimizde sadece o yazı içerisinde link var mı yok mu kontrol eder.

Hiç yorum yok:

Yorum Gönder