20 Ocak 2013 Pazar

Düzenli İfadeler - 4


{} (küme parantezi)
Bu metakarakter sayesinde, istediğimiz bir karakteri istediğimiz kadar yineletmemizi sağlıyor.


>>>import re
>>> liste=['st','sat','saat,','zaaat',]
>>>for i in liste:
if re.match("sa{2}t",i):
print i

saat


ilk örneğimizde 2 a harfi olan saat kelimesini buldurduk.



>>> for i in liste:
if re.match("za{3}t",i):
print i


zaaat

bu örneğimizdede 3 a harfi olan zaat kelimesini bulduk

Bu metakarakterimizin diğer bir özelliğide {0,2} şeklinde yazarak en az ve en çok ne kadar
tekrar etmesini belirtebiliriz

>>> for i in liste:
if re.match("sa{0,2}t",i):
print i


st
sat
saat


aynı sonucu şu kodlarlada alabiliriz;


>>> for i in liste:
if re.match("sa*t",i):
print i


st
sat
saat

sonuç aynı fakat burada herhangi bir sınır olmadığı için saaaaaat kelimesini listeye eklediğimizde
bu kelimeyide çıktı verecektir.Bir önceki dersten hatırlayalım.

^ (Şapka)
Bu metakarakterimizin 2 özelliği var.Bunlar ilki bir karakter dizisini en başındaki verileri sorgulamak:

>>> x=['VC10DD','FF33GG','WW44EE','QQ11QQ']
>>> for i in x:
ara=re.search("^[A-Z]+[0-9]",i)
if ara:
print ara.group()


VC1
FF3
WW4
QQ1



İkincisi ise " hariç " anlamında kullanımı:

>>>x.appen('4fbPY91')
>>> for i in x:
ara=re.match("[0-9A-Z][^a-z]+",i)
if ara:
print ara.group()


VC10DD
FF33GG
WW44EE
QQ11QQ

gördüğünüz gibi burada sonrada eklediğimiz "4fbPY91" elemanını çıktıda vermedi.Çünkü biz match
metoduyla aranacak kriterleri şöyle belirledik:

[0-9A-Z]=aranacak değerin en başında bir sayı veya büyük harf olmalı şartı
[^a-z]=belirlediğimiz sayı veya büyük har şartından sonra ^(şapka) metakarakterimizin ikinci özelliği
olan haric tutma özelliği ile küçük harf olmaması şartını sağlıyor.
+ =Bu karakterimizde ise yukarıdaki küçük harf olayının tekrar etmesi şartını sağlıyor yani
sayı veya büyük harften sonra ne kadar küçük harf gelirse gelsin yinede bu karakter topluluğunu almayacak.

Bu ^(şapka) metakarakterimizin dahil etmeme özelliğini şöylede kullanabiliriz:

>>> for i in x:
ara=re.search("[0-9A-Z][^a-z]+",i)
if ara:
print ara.group()


VC10DD
FF33GG
WW44EE
QQ11QQ
PY91

Görüldüğü gibi burada "4fbPY91" elemanımızın başında sayı olmasına rağmen sonraki karakterler küçük harf
olduğu için ilk üç karakteri çıkararak sonr 4 karakteri bize verdi

Hiç yorum yok:

Yorum Gönder