İPUCU

Python Artificial Intelligence’da en çok kullanılan dildir ve gerekli dökümanların paylaşım alanlar burada paylaşılmaktadır.

Seçenekler

Düzenli İfadeler (Regular Expression) / Ar-Ge Kulübü

Ceen - ait Kullanıcı Resmi (Avatar)
Forumdan Uzaklaştırıldı
Üyelik tarihi:
07/2017
Mesajlar:
219
Konular:
19
Teşekkür (Etti):
70
Teşekkür (Aldı):
75
Ticaret:
(0) %
25-04-2018 00:27
#1
Düzenli İfadeler (Regular Expression) / Ar-Ge Kulübü
Düzenli İfadeler (Regular Expression)
Düzenli ifadeler sayesinde, elle yapılması saatlerce süren işlemleri kısa bir süre içerisinde yapabiliriz. Metinleri ve karakter dizileri üzerinde hiç kendimizi yormadan çok basit bir şekilde düzenlemeler yapabiliriz. Bir web sitesinde karmaşık halde bulunan verileri düzenli ifadeler sayesinde rahatlıkla düzenleyebiliriz.

Düzenli ifadelerin tamamı bir modül içerisinde toplanmıştır. Modülümüzün adı re modülüdür. Re modülü için ekstra indirmemize gerek yoktur. Python kendi yapısında barındırdığı için sadece import re demeniz yeterli olacaktır.
Giriş
Dilerseniz modülümüze başlayalım. Ben en temel olan iki modülden bahsediceğim. Fazla detaya girmek istemiyorum. Ama siz tam manasıyla öğrenmek isterseniz konunun sonuna bağlantı vericeğim. Orada daha detaylı inceleyebilirsiniz.

1.Match
Arkadaşlar match metodu eşleştirmeye yarar. Yani siz bir nesneye karakter dizisi atadınız. Match ile o karakter dizisi içindeki ilk baştaki veriyi eşleştirebilirsiniz. Hemen örnek verim.



İlk önce re modülümüzü içe aktardık. Daha sonra ornek adlı bir nesneye karakter dizisi atadık. Şunu belirtmek isterim. THT dışındaki bir veriyi eşleltirmeyi denerseniz hata alırsınız. Match metodu sadece ilk baştaki veriyi eşleştirir. Eğer nesneyi döndürürse Match objeckt sonucunu alırız. Hemen bakalım.



Dikkat ettiyseniz eşleştirmemizi bir nesneye atadık. Yani eseles artık bir nesne döngüsü olduk. Görmek için ise print fonksiyonu ile birlikte yazdım sonucumuza bakalım.



Başarılı bir şekilde eşleştirmemizi yaptık. Dilersenize Kulubu’ nü eşleştirim. Bakalım başarılı bir şekilde döndürecekmi. Eğer dömdürmezse None sonucunu alacağız.



Evet None sonucumuzu aldık. Match metodunun genel mantığı bu. Birkaç örnek daha yapalım.



Bu seferde integer’ı bir str dizini gibi kaydettim. Ve eşleştirme yaptım. Bakalım sonucumuza.



3.sünün None gelme sebebi sayıların sırasında hata var. Yani tek parametre girerseniz bu sefer hane hane sıralama yapar. Dilerseniz group() metodundanda bahsedim hemen.



Programımızın yapısına bakalım. Ornek adlı bir değişkene str dizisi atadık. Daha sonra eşleştirme adlı değişkene eşleştirmemizi atadık. Ve nesnemizi group metodu ile kullandım. Sonucumuza bakalım.



Gördüğümüz gibi group metodu ise eşleştirdiğimiz veriyi ekrana yazdırır. Peki eğer ilk indexteki değilde farklı bir indextekini alsaydık ne olurdu?



Sonucumuza bakalım.



Gördüğünüz gibi hatamızı aldık. Bunun sebebi eşleştirme bir döngü nesnesi olduğu için, yani eşleştirmemiz hatalı olduğu için hatalı sonuç aldık. Basit bir program yapalım.



Sonucumuza bakalım:



Eğer farklı bir veri ile eşleştirme yaparsak:



Şeklinde sonucumuzu alırız.
2.Search Metodu
Arkadaşlar search modülü ise match metoduna benzer. Fakat çok önemli bir farkı var. O da search metodunun karakter dizininde sadece başa değil geneline bakmasıdır. Nasıl yani? Eğer match metoduna tekrar bakarsak sadece en baştaki veriyi eşleştirdiğini görürüz. Fakat search ise dizinin geneline bakarak eşleştirmek istediğin veriyi sana verir. Önceki programımızda yapalım hemen.



Match metodumuzu kaldırdık ve search metodumuzu getirdik sonucumuza bakalım.




[ ] Köşeli Parantez
İçerisine yazılan karakterleri sırasıyla eşleştirir.



Dikkat ettiyseniz liste içerisinde bu sefer nesne oluşturdum. Fakat düzenli karakterler sadece karakter dizileri üzerinde işlem yaptığı için birkaç oynama ile bunu halledebilirsiniz. Sonucumuz da mantıken 2 nesne vericek.

. Nokta
Herhangi bir karakter yerine kullanılabilir.

*Yıldız
Öncesinde gelen ifaleri birden fazla kez tekrarlanmasını sağlar.

^ Şapka
Metnin başlangıcını temsil eder.

$ Dolar
Metnin sonunu temsil eder.

() Parantez
Gruplandırarak çağırmamızı sağlar.

? Soru İşareti
Öncesindeki tanımın 0 veya bir kez tekrarlanmasını sağlar.

{} Süslü Parantez
Tekrar sayısı için kullanılır. Tabi biz bu tekrar sayısını belirleyebiliriz.

+ Artı
Öncesindeki ifadeleri bir veya daha fazla tekrarlanmasını sağlar.

| Pipe
Veya anlamında kulanılır. İki ifadeyi birleştirir.

Bazı Özel Parametreler
/D
Rakam olmayan harfleri işleştirir.

/d
Rakamları eşleştirir.

/w
Harfleri eşleştirir

/W
Harf olmayan boşluk satırı gibi karakterleri eşleştirmemizi sağlar.

/s
Boşlukları eşleştirir.

/S
Boşluk anlamına gelmeyen karakterleri eşleştirir.

Bazı Bayrak Seçenekleri
Re.I
Büyük-Küçük harf hassasiyetini kaldırır.

Re.M
Çok satırlı eşleştirme yapar.

Re.A
ACII karakterleri eşleştirir.

Re.L
Yerelleştirme ayarlarını göz önüne alır.

Re.S
Nokta özel karakterinin yeni satır karakteri ile eşleşmesini sağlar.

Hepsine tek tek değinmiyeceğim. Bir kaç örnek yaparak düzenli ifadelerimizden bahsedelim.



Sonucumuza bakalım:



Şapka, search metodundaki nesnelerin başına bakar. Dikkat ettiyseniz A-Z yani sadece harfle başlayanları alacağını gördük. Üç tane harfle başlayan değer olduğu için üç verinin baş harflerini verdi.



Burada liste içerisinde 4 tane parametre olduğunu görüyoruz. Dolar işareti burada sonu ak ile biten verileri ekrana vermesini sağlar. Hemen bakalım:



Gördüğümüz gibi 3 tane sonu ak ile biten veriyi karşımıza çıkardı.



Pipe ise veya anlamına geliyordu. 3 tane renk var. Pipe ile üçünü de eşleştirmeye aldık.



Evet üç rengimizi de pipe sayesinde eşleştirdik. Daha detaylı incelemek isterseniz:

https://belgeler.yazbel.com/python-istihza/regex.html bu sayfadan kendinizi geliştirebilirsiniz. Hayırlı günler.
BufGix, Mapzilla, bozkurt0607 Teşekkür etti.
Cix1737 - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
08/2017
Mesajlar:
155
Konular:
53
Teşekkür (Etti):
22
Teşekkür (Aldı):
4
Ticaret:
(0) %
25-04-2018 00:57
#2
Eline Sağlık Güzel Anlatım Olmuş
---------------------
©Cix
Ne Olmuş Yani Büyük Adam Olamadıysak Hayallerimizi Satmadık Ya.
Ceen - ait Kullanıcı Resmi (Avatar)
Forumdan Uzaklaştırıldı
Üyelik tarihi:
07/2017
Mesajlar:
219
Konular:
19
Teşekkür (Etti):
70
Teşekkür (Aldı):
75
Ticaret:
(0) %
25-04-2018 01:47
#3
Eyvallah hocam.
BufGix - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
08/2015
Nereden:
Phobos/Space
Mesajlar:
1.023
Konular:
74
Teşekkür (Etti):
314
Teşekkür (Aldı):
446
Ticaret:
(0) %
25-04-2018 09:03
#4
Ellerine sağlık
---------------------
~Cahile gelmez benden hayır
Ceen Teşekkür etti.
Ceen - ait Kullanıcı Resmi (Avatar)
Forumdan Uzaklaştırıldı
Üyelik tarihi:
07/2017
Mesajlar:
219
Konular:
19
Teşekkür (Etti):
70
Teşekkür (Aldı):
75
Ticaret:
(0) %
25-04-2018 10:36
#5
Alıntı:
easyly´isimli üyeden Alıntı Mesajı göster
Ellerine sağlık
Eyvallah hocam.
thelasthacker - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
06/2015
Mesajlar:
960
Konular:
81
Teşekkür (Etti):
71
Teşekkür (Aldı):
109
Ticaret:
(0) %
25-04-2018 11:20
#6
elinize sağlık yararlı
--------------------- Don’t be too optimistic. The light at the end of the tunnel may be another train.
Ceen - ait Kullanıcı Resmi (Avatar)
Forumdan Uzaklaştırıldı
Üyelik tarihi:
07/2017
Mesajlar:
219
Konular:
19
Teşekkür (Etti):
70
Teşekkür (Aldı):
75
Ticaret:
(0) %
25-04-2018 12:21
#7
Alıntı:
thelasthacker´isimli üyeden Alıntı Mesajı göster
elinize sağlık yararlı
Teşekkürler.
bozkurt0607 - ait Kullanıcı Resmi (Avatar)
Tamamen Forumdan Uzaklaştırıldı
Üyelik tarihi:
07/2017
Nereden:
ANGARA
Yaş:
18
Mesajlar:
518
Konular:
63
Teşekkür (Etti):
386
Teşekkür (Aldı):
185
Ticaret:
(0) %
14-05-2018 06:25
#8
Eline sağlık
Ceen - ait Kullanıcı Resmi (Avatar)
Forumdan Uzaklaştırıldı
Üyelik tarihi:
07/2017
Mesajlar:
219
Konular:
19
Teşekkür (Etti):
70
Teşekkür (Aldı):
75
Ticaret:
(0) %
14-05-2018 13:15
#9
Teşekkürler Hocam.
Fathergaming - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
12/2017
Nereden:
Rootweb
Mesajlar:
84
Konular:
17
Teşekkür (Etti):
6
Teşekkür (Aldı):
4
Ticaret:
(0) %
14-05-2018 13:52
#10
Elinize Sağlık

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı