[ÇÖZÜLDÜ] Düzenli ifadeler ve metakarakterler ile ilgili

Merhaba, aşağıdaki kodların çıktılarında anlayamadığım bir nokta var. Burada match() metodu her bir öğenin baş kısmına bakarak karşılaştırma yapıyor ve sonu “met” ile biten kelimeleri arıyorsa neden “kezmetban” gibi bir kelimeyi buluyor? Yani bu kelimenin sonunda “ban” eki var. Ben mi yanlış yorumluyorum. Çünkü kitapta match() metodunun işleyişi böyle anlatılmış. bkz. sayfa 801

import re
liste = ["ahmet", "mehmet", "met", "kezmetban"]

for i in liste:
    if re.match(".*met", i):
        print(i)
print()

for i in liste:
    if re.match('.+met', i): # evvelinde en az bir karakter olup sonu met ile bitenler
        print(i)

Merhaba.

Bende kitap olmadığı için bahsettiğiniz yere bakamıyorum ancak düzenli ifadelerin işleyişinde doğrudan metnin sonuna odaklanmak yoktur. Eğer böyle yapmak istiyorsanız $ özel karakterini kullanmalısınız:

import re
liste = ["ahmet", "mehmet", "met", "kezmetban"]

for i in liste:
    if re.match(".*met$", i):
        print(i)
print()

for i in liste:
    if re.match('.+met$', i): # evvelinde en az bir karakter olup sonu met ile bitenler
        print(i)

İyi çalışmalar.

1 Beğeni

kitap dediğim Fırat Özgül’ün Python 3 kitabı. pdf 918 sayfa. Sizde de var.

Merhaba.

Evet bir yanlışlık var. '.+met' düzenli ifadesi sadece sonu 'met''le biten metinleri değil, bir ya da daha fazla karakterle başlayıp 'met' ile devam eden tüm öğeleri eşler. Aslında yazar böyle demek istemiş, ancak yanlış anlaşılmalara açık olmuş biraz.

Bahsettiğiniz sayfadan biraz ilerleyince ^ ve $ sembollerini anlatan bölümler var, burada bahsettiğiniz karışıklığa açıklık getiriliyor; siz okumaya devam edin. :slight_smile:

İyi çalışmalar.

1 Beğeni

Evet ben de denemeler yapınca sizin dediğiniz sonuca eriştim. Teşekkürler… Bu kitap çok güzel anlatıyor. Ama son kısımları sanki biraz draft versiyon gibi olmuş. Fırat bey galiba bu işleri bıraktı. Yoksa bu kitabın hataları arındırılıp güncel versiyonları çıkması gerekir.

Evet bıraktı, siteyi de kapattı. Ben forumu ve belgeleri devam ettirme kararı vermiştim. Forum devam ediyor olsa da belgelerde bunu başarabildiğim söylenemez.

biz de udemy’den başkalarının video derslerine yöneliyoruz işte. Halbuki böylesine güzel anlatımı olan birinin online kurs şeklinde dersleri olsaydı düşünmeden alırdım.

1 Beğeni

Doğru söylüyorsunuz. Bu işleri bıraktı ama yine de Kodlab’dan çıkan Python kitabını alarak destekte bulunabilirsiniz. Kim bilir, belki desteğiniz dönmesine vesile olur.

2 Beğeni

ilk fırsatta alacağım.

1 Beğeni