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.
istihza dan direkt olarak kopyaladığınıda belirteydin iyiydi..
YanıtlaSilEğ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...
YanıtlaSilHerkes 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...