Düzenli İfadeler - Tanım ve Fonksiyonlar

Düzenli İfadeler (Regular Expressions)

Düzenli ifadeler (RegEx ya da Regular Expression), bir arama işleminde eşleştirilecek deseni temsil eden özel dizelerdir. Bir başka tanımla bir karakter dizisi içinde bulunan, belli bir düzene uyan eşleşmeleri bulmanıza ve yönetmenize yardımcı olacak desenler oluşturmanıza izin veren bir metin dizisidir (bir string ifadedir). Bir metinde geçen karakterleri RegEx desenleri (pattern) kullanarak arayabiliriz.

Tanım biraz karmaşık gelmiş olabilir. Ancak kısa bir örnek vererek konuyu açıklamaya çalışayım. Diyelim ki elimizde uzun bir metin var. Bu metin içerisindeki sayıları, telefon numaralarını, e-posta adreslerini, ...vb bir yapıyı otomatik olarak bulmak / tespit etmek isteyelim. Bu durumda bulmak istediğimiz yapıyı temsil eden bir desen tanımlayarak metinde eşleşen tüm sonuçları bulabiliriz. Deyatlı açıklama ve örneklerle konuyu daha iyi öğreneceksiniz.

Düzenli ifadeler Java ve Perl gibi programlama dillerinden grep, sed ve metin düzenleyici vim gibi metin işleme araçlarına kadar çok çeşitli bilgi işlem uygulamalarında kullanılan önemli bir araçtır.

Düzenli ifadeler sayesinde ne yapabiliriz bir bakalım :

Python’daki düzenli ifadelere ilişkin her şey, bir modül içinde tutulur. Bu modülün adı re'dir. re modülü Python'ın dahili (build-in) modüllerindendir. İlave olarak yüklememize gerek yoktur. Bilgisayarınızda Python yüklü ise, re modülü de yüklenmiş ve kullanıma hazır olarak bekliyordur.

Düzenli ifadeleri kullanabilmemiz için öncelikle bu re modülünü içe aktarmamız gerekir:

import re

RegEx Fonksiyonları / Metotları

re modülü bir veride geçen karakterleri bulmamıza ve değiştirmemize olanak sağlayan bazı fonksiyonlara sahiptir. Bunlar;

Fonksiyon / Metot Açıklama
match() Karakter dizisinin başında eşleşme olup olmadığını göster. Aranılan desen, stringin başında bulunduğu durumda eşleşmenin konumunu belirten bir eşleşme nesnesi üretir. Herhangi bir eşleşme bulunamadığı durumda None değeri üretir.
search() Eşleşme olup olmadığını göster. match() fonksiyonu ile aynı işlevi vardır. Yalnızca ilk eşleşmeye dair eşleşme nesnesi üretir.
findall() Tüm eşleşmeleri gösterir (liste halinde). Aranılan desen string içerisinde bulunduğu durumda, yakaladığı tüm eşleşmeleri liste olarak getirir.
finditer() Belirtilen desenlerin karakter dizileri içerisindeki konumunu bulmak için kullanabiliriz
split() Aranılan desen string içerisinde bulunduğu durumda, string’i eşleştiği bölgelerden böler ve bölünmüş halini liste olarak getirir. Herhangi bir eşleşme olmadığı durumda stringin kendisini getirir.
sub() Eşleşmeleri verilen ifade ile değiştir. Aranılan deseni string içerisinde bulduğu durumda, verilen diğer string değeri ile değiştirir.
subn() Eşleşmeleri verilen ifade ile değiştir, kaç adet değişiklik yapıldığını gösterir
escape() Bir metni, düzenli ifade içinde kullanılmaya uygun hale getirmek için kullanılır
compile() Düzenli İfadeleri Derlemek için kullanılır
purge() Düzenli ifade önbelleğini temizlemek için kullanılır

Kaynaklar:

Düzenli İfadeler (Regular Expressions) konusu hazırlanırken faydalanılan tüm kaynakları, her sayfada ayrı ayrı belitrmek yerine burada toplu olarak belirtmek istiyorum.