Düzenli İfadeler -2-

Yazar: Unknown Tarih: 19 Şubat 2012 Pazar Yorum: Yorum Yap
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.
Paylaş: Facebook Twitter Google Plus Pinterest Tumblr

Bu yazıya yapılan yorumlar:

  1. istihza dan direkt olarak kopyaladığınıda belirteydin iyiydi..

    YanıtlaSil
  2. Eğer blogu en başından takip etseydiniz görürdünüz, istihzanın kitap halini aldığımı ve bu kitabı okuduktan sonra bunları yazdığımı,ayrıca elimde bir de eğitim seti var.Bu ikisinin derlenmiş halini veriyordum blogda. zaten ben blogda istihza'ya link veriyorum açıklayamadığım/bilgimin yetmediği yerlerde niye saklıyayım ki...
    Herkes birilerinden bir şeyler öğrenir ve bunları birileriyle paylaşmak ister ve paylaşır, eğer dediğiniz gibi bir izlenim verdiysem daha özgün olmaya çalışırım. İlginiz için teşekkürler...

    YanıtlaSil