Python Regex Örnekleri

Python Regex Ornekleri



Regex'in tam biçimi Normal İfade'dir. Herhangi bir programlama dilinin önemli bir özelliğidir. Bir dize değerindeki dizeleri eşleştirmek, aramak veya değiştirmek için kullanılan bir dize modelidir. Regex modeli Python betiğinde Python'un “re” modülü kullanılarak kullanılabilir. Bu modül, farklı dize işlemlerini gerçekleştirmek için birçok fonksiyon türüne sahiptir. Görevleri aramak veya değiştirmek amacıyla normal ifade kalıplarını tanımlamak için farklı meta karakterler ve özel diziler kullanılır. Python betiğinde yaygın olarak kullanılan bazı meta karakterlerin, özel dizilerin ve normal ifade yöntemlerinin kullanım amaçları bu eğitimde gösterilmektedir.

Regex'te yaygın olarak kullanılan bazı meta karakterler:









Karakterler Amaç
'+' Bir dizede belirli bir karakterin bir veya daha fazla oluşumunu eşleştirmek için kullanılır.
'*' Bir dizede belirli bir karakterin sıfır veya daha fazla oluşumunu eşleştirmek için kullanılır.
'?' Bir dizedeki belirli bir karakterin sıfır veya bir örneğini eşleştirmek için kullanılır.
'^' Dizenin başlangıcındaki belirli karakteri veya dizeyi eşleştirmek için kullanılır.
'$' Dizenin sonundaki belirli karakter veya dizeyi eşleştirmek için kullanılır.
'|' Bir dizedeki birden çok dizeden herhangi birini eşleştirmek için kullanılır. OR mantığı gibi çalışır.
'[]' Bir dizi karakteri eşleştirmek için kullanılır.
'{}' Belirli sayıda karakteri eşleştirmek için kullanılır.



Regex'te yaygın olarak kullanılan bazı özel diziler:





Diziler Amaç
'\A' Dizenin başlangıcındaki belirli karakteri eşleştirmek için kullanılır. “^” karakteri gibi çalışır.
'\b', '\B' “\b”, dizenin başında veya sonunda belirli bir karakter veya kelimeyi içeren dizeyi eşleştirmek için kullanılır. “\B”, “\b”nin karşısında çalışır.
'\d', '\D' “\d”, dizedeki “[0-9]”a benzer ondalık sayıyı eşleştirmek için kullanılır. “\D”, “\d”nin tersi olarak çalışır.
'\s', '\S' “\s”, dizedeki “[\n\t\r\v]”ye benzer boşlukları eşleştirmek için kullanılır. “\S”, “\s”nin tersi olarak çalışır.
'\w', '\W' “\w” dizedeki alfabetik ve sayısal karakterleri eşleştirmek için kullanılır. “\W”, “\w” harfinin tersi olarak çalışır.
'\İLE' Dizenin sonundaki belirli karakteri eşleştirmek için kullanılır. “$” karakteri gibi çalışır.

Örnek 1: Match() İşlevini Kullanarak Dizeyi Eşleştirin

Match() işlevi, dizenin başlangıcındaki normal ifade modelini eşleştirmek için kullanılır. Bu fonksiyonun söz dizimi şu şekilde verilmiştir:



Sözdizimi:

Rövanş ( desen, dize, bayraklar = 0 )

Burada ilk argüman normal ifade modelini tanımlamak için kullanılır. İkinci argüman ana dizeyi tanımlamak için kullanılır. Üçüncü argüman isteğe bağlıdır ve farklı bayrak türlerini tanımlamak için kullanılır.

Match() işlevini kullanarak bir normal ifade modelini tanımlı bir dizeyle eşleştiren aşağıdaki komut dosyasıyla bir Python dosyası oluşturun. İlk olarak, eşleştirmek için tanımlanmış bir normal ifade modeli kullanılır. Daha sonra kullanıcıdan bir arama sözcüğü alınır ve dize değeriyle eşleştirmek için normal ifade modeli olarak kullanılır. Herhangi bir eşleşme bulunursa arama sözcüğü yazdırılır. Aksi takdirde “Eşleşen değer bulunamadı” dizesi yazdırılır.

#Gerekli modülü içe aktar
yeniden içe aktar

#Eşleşen sonucu yazdırmak için işlevi tanımlayın
def matchString ( ) :
#match() işlevinin dönüş değerini kontrol edin
eğer ile birlikte ! = Yok:
Yazdır ( ''' + mat.grup ( ) + '', '' içinde bulunur + strDeğer + ''' )
başka:
Yazdır ( 'Eşleşen değer bulunamadı.' )

#Dize değerini tanımla
strDeğeri = 'İlk giren ilk çıkar.'
#Dizeyi desene göre eşleştir
mat = yeniden eşleşme ( '^İlk' , strValue )
Maç sonucunu yazdırmak için #Call işlevi
MatchString ( )

#Arama dizesini al
inValue = giriş ( 'Arama değerini girin: ' )
mat = yeniden eşleşme ( inValue + , strValue )
Maç sonucunu yazdırmak için #Call işlevi
MatchString ( )

“İlk” giriş değeri için aşağıdaki çıktı görünür:

Örnek 2: Findall() İşlevini Kullanarak Dizeyi Bulun

Findall() işlevi, ana dizede bulunan tüm eşleşen sözcükleri bir tanımlama grubu olarak döndürmek için kullanılır.

Sözdizimi:

yeniden bul ( desen, dize, bayraklar = 0 )

Burada ilk argüman normal ifade modelini tanımlamak için kullanılır. İkinci argüman ana dizeyi tanımlamak için kullanılır. Üçüncü argüman isteğe bağlıdır ve farklı bayrak türlerini tanımlamak için kullanılır.

Kullanıcıdan bir ana dize değeri ve bir arama dizesi değeri alan aşağıdaki komut dosyasıyla bir Python dosyası oluşturun. Daha sonra, ana dizede arama kelimesini bulmak için normal ifade kalıbındaki arama kelimesini kullanın. Toplam eşleşme sayısı çıktıda yazdırılır.

#Gerekli modülü içe aktar
yeniden içe aktar

#Bir dize değeri al
inValue = giriş ( 'Bir dize girin: ' )

#Bir arama sözcüğü alın
srcValue = giriş ( 'Bir arama sözcüğü girin: ' )

#Dizedeki kelimeyi ara
srcResult = re.findall ( kaynakDeğeri + '\İçinde*' , değerinde )
#Arama sonucunu yazdır
Yazdır ( 'Kelime '' + kaynakDeğeri + '' dizede bulunur '
+ dizi ( sadece ( srcSonucu ) ) + ' zamanlar.' )

Çıktıya göre, “Yaşamak için yiyoruz ve yemek için yaşamıyoruz” ana dizisinde “ye” arama kelimesi iki kez bulunuyor.

Örnek 3: Search() İşlevini Kullanarak Dizeyi Arama

Search(), bir dize değerindeki belirli bir modeli aramak için kullanılan başka bir işlevdir. Match() ve findall() işlevleriyle aynı argümanları içerir. Kullanıcıdan alınacak bir string değerinde “Python” kelimesini arayan aşağıdaki script ile bir Python dosyası oluşturun. Arama sözcüğü giriş değerinde mevcutsa bir başarı mesajı yazdırılır. Aksi takdirde bir arıza mesajı yazdırılır.

#Yeniden modülü içe aktar
yeniden içe aktar

#Bir dize değeri al
inValue = giriş ( 'Bir dize girin: ' )
#Dize değerinde belirli bir kelimeyi arayın
srcResult = yeniden arama ( R 'Python\w*' , değerinde )

#Arama sözcüğünün bulunup bulunmadığını kontrol edin
eğer srcSonucu:
Yazdır ( ''' + srcResult.group ( ) + '', '' içinde bulunur + değer olarak + ''' )
başka:
Yazdır ( 'Arama dizesi bulunamadı.' )

Çıktı:

Giriş dizesi 'Python programlamayı seviyorum' ise aşağıdaki çıktı görünür:

Giriş dizesi “PHP programlamayı seviyorum” ise aşağıdaki çıktı görünür:

Örnek 4: Sub() İşlevini Kullanarak Dizeyi Değiştirme

sub() işlevi, desene göre belirli bir dizeyi aramak ve onu başka bir sözcükle değiştirmek için kullanılır. Bu fonksiyonun söz dizimi şu şekilde verilmiştir:

Sözdizimi:

yeniden alt ( desen, değiştir_dizge, ana_dize )

Bu fonksiyonun ilk argümanı, ana dizgede belirli bir dizgeyi aramak için kullanılan modeli içerir.

Bu işlevin ikinci argümanı 'değiştir' dize değerini içerir.

Bu işlevin üçüncü argümanı ana dizeyi içerir.

Bu işlev, ilk argümana dayalı olarak ana dizede eşleşen herhangi bir sözcük varsa, değiştirilen dizeyi döndürür.

Dizenin sonundaki iki rakamı arayan aşağıdaki komut dosyasıyla bir Python dosyası oluşturun. Dizinin sonunda iki rakam varsa, rakamların yerini “50$” dizisi alır.

#Yeniden modülü içe aktar
yeniden içe aktar

#Ana dizeyi tanımla
strDeğeri = 'Kitabın fiyatı 70'

#Arama modelini tanımlayın
desen = '[0-9]{2}'

#Değiştirme değerini tanımlayın
Değiştirilen Değer = '50$'

#Desene göre dizeyi arayın ve değiştirin
değiştirilmiş_strValue = re.sub ( desen, değiştirmeDeğeri, strValue )
#Orijinal ve değiştirilmiş dize değerlerini yazdır
Yazdır ( 'Orijinal dize: ' + strDeğer )
Yazdır ( 'Değiştirilen dize: ' + değiştirilmiş_strValue )

Çıktı:

Ana dizinin sonunda 70 tane vardı. Böylece, değiştirilen dizede 70'in yerini 50$ alır.

Örnek 5: Subn() İşlevini Kullanarak Dizeyi Değiştirme

subn() işlevi, sub() işlevi gibi çalışır; tek farkı, çıktıyı, ilk dizinin değiştirilen değeri içerdiği ve ikinci dizinin toplam eşleşme sayısını içerdiği bir demet olarak döndürmesidir.

Subn() işlevini kullanarak “LinuxHint.com” dizesinde A'dan L'ye kadar olan alfabeleri arayan aşağıdaki komut dosyasıyla bir Python dosyası oluşturun:

#Yeniden modülü içe aktar
yeniden içe aktar

#Ana dizeyi tanımla
strDeğeri = 'LinuxHint.com'

#Arama modelini tanımlayın
desen = '[DO'YA]'

#Değiştirme değerini tanımlayın
Değiştirilen Değer = '*'

#Desene göre dizeyi arayın ve değiştirin
değiştirilmiş_strValue = re.subn ( desen, değiştirmeDeğeri, strValue )
#Orijinal dizeyi ve subn() çıktısını yazdır
Yazdır ( 'Orijinal dize: \N ' + strDeğer )
Yazdır ( 'Subn() fonksiyonunun çıktısı: ' )
Yazdır ( değiştirilmiş_strValue )

Çıktı:

Aşağıdaki çıktıya göre “L” ve “H” karakterleri “*” karakteri ile değiştirilmiştir.

Örnek 6: Split() İşlevini Kullanarak Dizeyi Bölme

Ana dizeyi normal ifade desenine göre birden çok parçaya bölmek için split() işlevini kullanan aşağıdaki komut dosyasıyla bir Python dosyası oluşturun:

#Yeniden modülü içe aktar
yeniden içe aktar

#Dize değerini tanımla
strVal= 'Rupa Akter;Nira Chowdhury;Mazharul İslam'
#Verileri bölmek için kullanılacak modeli tanımlayın
desen = '[^A-Za-z ]'
#Bölünmüş değerleri bir listede saklayın
split_result = yeniden.split ( desen, strVal )
Yazdır ( 'Split() fonksiyonunun çıktısı:' )
Yazdır ( bölünmüş_sonuç )

Çıktı:

Çıktıya göre ana dizi, scriptte kullanılan “[^A-Za-z ]” kalıbına göre üç parçaya bölünmüştür.

Çözüm

Dizeleri aramak, değiştirmek ve bölmek için en sık kullanılan meta karakterlerin, aralıkların ve Python yerleşik işlevlerinin amacı, bu eğitimde basit Python komut dosyaları kullanılarak gösterilmektedir.