Python ile Normal İfadeler için Başlangıç ​​Kılavuzu

Python ile Normal İfadeler için Başlangıç ​​Kılavuzu

Bir programcıysanız, normal ifadelerin (regex) ne olduğunu zaten biliyorsunuzdur. Regex kalıpları hemen hemen her ana akım programlama dilinde uygulanmıştır, ancak yine de bu kalıpların gücü ve çok yönlülüğü çoğu geliştirici tarafından tanınmamaktadır.





Bu kılavuz tamamen normal ifadeler ve bunları Python programlama dilinde nasıl kullanabileceğinizle ilgilidir.





Normal İfadeler Nelerdir?

Normal ifadeler, kullanıcının metin dosyalarındaki ve dizelerdeki karakter kombinasyonlarını eşleştirmesine yardımcı olan kalıplardır. Bir komutun veya belgenin çıktısında belirli bir kalıbı filtrelemek veya bulmak için normal ifadeleri kullanabilirsiniz.





Düzenli ifadelerin çeşitli kullanım durumları vardır, en ünlüsü Linux'ta grep komutu . Diğer uygulamalar, bir veri dökümünden e-posta adreslerini ve telefon numaralarını çıkarmak gibi bilgi filtrelemeyi içerir.

Birçok geliştiricinin normal ifadelerden uzaklaşmasının ana nedeni, kalıp eşleştirmenin gücü hakkında farkındalık eksikliğidir. Hatta bazıları, kalıplarda kullanılan çok sayıda karakter ve dizi nedeniyle düzenli ifadeleri kafa karıştırıcı buluyor.



Sebep ne olursa olsun, düzenli ifadeler herkesin bilmesi gereken programlamanın en önemli yönlerinden biridir ve olacaktır.

ses ile kayıt nasıl görüntülenir

Normal İfadeler: Eşleşen Karakterler ve Diziler

Regex kendi içinde tamamen yeni bir dildir. Bir regex motoru, belirli anlamlarla donatılmış birkaç karakterden oluşan kalıpları yorumlar. Alfanümerik karakterler gibi temel değişmezler kendileriyle eşleşir. Ancak $, *, +, {, vb. gibi karmaşık karakterler, üst düzey eşleştirmeye yardımcı olur.





  1. Yıldız (*): Önceki karakterle sıfır veya daha fazla kez eşleşir. Karakterin gerçek anlamı 'Öğe ile n kez çarpım' olacaktır. Örneğin, normal ifade ise abc * , eşleşen dizeler ab, abc, abcc, abccc, abcccc vb. olacaktır. İfade [M.Ö]* bc, bcbc, bcbc, vb. ile eşleşir.
  2. Daha fazla (+): Bir önceki karakterle bir veya daha fazla kez eşleşir. Çalışması + karakter şuna benzer * , fakat + karakter oluşmazsa, karakter kalıbı atlar. Örneğin, abc + abc, abcc, abccc vb. ile eşleşir ancak ab ile eşleşmez.
  3. Soru işareti (?): Bir önceki karakterle sıfır veya bir kez eşleşir. Örneğin, desen ABC? yalnızca ab ve abc ile eşleşir.
  4. Boru (|): İkili olarak kullanılır VEYA Şebeke. Kanaldan önceki ve sonraki karakterlerden herhangi biriyle eşleşir. Örneğin, a|b a veya b ile eşleşir.
  5. Nokta (.): Kimliği bilinmeyen bir karakterle eşleşir. Örneğin, AC aac, abc, acc, a2c vb. ile eşleşir.
  6. Havuç (^): Desendeki ilk karakterle eşleşir. Örneğin, ^ Ra ile başlayan kelimeleri eşleştirecek Dışarı Tavşan, Rakun ve Rastgele gibi.
  7. Dolar ($): Desendeki son karakterle eşleşir. Örneğin, bir$ ile biten kelimeleri eşleştirecek bir Van, Dan ve Plan gibi.
  8. Kısa çizgi (-): Bir dizi karakter tanımlamak için kullanılır. Örneğin, [0-9] tüm tek basamaklı sayısal karakterlerle eşleşir.

Düzenli ifade kalıplarında kullanılan özel diziler şunlardır:

  1. İLE: Sonraki karakterler dizenin başında mevcutsa bir eşleşme döndürür. Örneğin, A ile başlayan kelimeleri eşleştirecek NS Örneğin, Onlar, Onlar, vb.
  2. B: Karakter bir kelimenin başında veya sonunda bulunursa bir eşleşme döndürür. Örneğin, bmad ve deli gibi kelimelerle eşleşecek yapılmış ve göçebe sırasıyla.
  3. B: Karakter bir kelimenin başında veya sonunda bulunamazsa bir eşleşme döndürür.
  4. NS: Dizede bulunan sayısal karakterlerle eşleşir. Örneğin, /NS* 1, 12, 1232 vb. sayılarla eşleşecektir.
  5. NS: Dizedeki sayısal olmayan karakterlerle eşleşir. /NS a, b, c, f vb. ile eşleşir.
  6. s: Metindeki bir boşluk karakteriyle eşleşir.
  7. S: Metinde boşluk olmayan bir karakterle eşleşir.
  8. içinde: Dize alt çizgiler dahil alfasayısal karakterler içeriyorsa bir eşleşme döndürür. Örneğin, içinde a, b, c, d, 1, 2, 3 vb. ile eşleşir.
  9. İÇİNDE: Dize alfasayısal karakterler veya alt çizgiler içermiyorsa bir eşleşme döndürür.
  10. İLE BİRLİKTE: Bir dizenin sonundaki karakterlerle eşleşir. Örneğin, bitiş ile biten kelimeleri eşleştirecek son bükme, onarma, eğilme vb.

Normal İfadeler için Python Yöntemleri

Python'da, tekrar kitaplık, programlarınızda regex uygulamak için gereken tüm gerekli işlevleri ve yardımcı programları sağlar. Python yorumlayıcısı ile önceden yüklenmiş olarak geldiği için kitaplığı pip kullanarak indirmeniz gerekmez.





içe aktarmak için tekrar Python'da kütüphane, komut dosyanıza aşağıdaki kodu ekleyin:

import re

Python'da normal ifadeleri geçirirken, aşağıdaki gibi özel karakterleri yorumlamadıkları için ham dizeler kullandığımızı unutmayın. ve T farklı.

Kibrit()

NS Rövanş() Python'daki yöntem, program belirtilen dizenin başında bir eşleşme bulursa bir regex nesnesi döndürür. Bu işlev iki temel argüman alır:

re.match(pattern, string)

...nerede Desen normal ifadedir ve sicim aranması gereken metindir.

Aşağıdaki kod parçasına bir göz atın.

import re
match = re.match(r'Word', 'This sentence contains a Word')
print(match)

NS r dizeden önceki karakter, ham dize anlamına gelir.

Çıktı:

None

Yukarıda belirtilen kod döner Hiçbiri Çünkü Kelime dizenin başında mevcut değildi.

Bir eşleşme bulunursa, eşleşmeyi kullanarak yazdırabilirsiniz. grup() regex nesnesine ait olan yöntem.

import re
match = re.match(r'Word', 'Word is hard to read')
print(match.group(0))

Çıktı:

Word

NS Araştırma () yöntem, re.match() ile benzer argümanları alır. match() yalnızca dizenin başında bulunan eşleşmeleri döndürürken, arama() dizedeki herhangi bir dizinde bulunan eşleşmeleri döndürür.

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
print(match.group(0))

unutmayın ki kibrit() ve arama() yöntemler yalnızca bir kalıp eşleşmesi döndürür. Yukarıda belirtilen kodda, Kelime iki kez görünür. Fakat arama() işlev yalnızca kelimenin ilk geçtiği yerle eşleşir.

Word

Hepsini bul()

Zaten tahmin edebileceğiniz gibi, hepsini bul() yöntem, dizedeki her olası eşleşmeyi döndürür.

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
for elem in match:
print(elem)

Bir regex nesnesi döndürmek yerine findall() işlevi tüm eşleşmelerin bir listesini döndürür. Bir kullanarak listeyi yineleyebilirsiniz. python'da döngü için .

Bölmek()

Bir dizgiyi sınırlayıcı olarak bir desen kullanarak alt dizgilere bölmek istiyorsanız, o zaman bölmek() ihtiyacınız olan işlevdir.

import re
split = re.split(r'and', 'This word and that and this are different.')
print(split)

Çıktı:

['This word', 'that', 'this are different.']

Alt()

NS alt() yöntem, bir kullanıcının bir kalıp yerine belirli bir kelimeyi değiştirmesine izin verir. Aşağıdaki argümanları alır.

re.sub(pattern, replacement, string)

Bu kod parçacığını düşünün:

import re
result = re.sub(r'and', 'or', 'Dave and Harry must be punished.')
print(result)

Çıktı:

Dave or Harry must be punished.

Derle()

NS yeniden derleme() yöntemde tekrar kitaplık, bir kullanıcının düzenli ifade modelinin derlenmiş bir sürümünü bellekte saklamasına izin verir. Ardından, derlenmiş nesneyi kullanarak kullanıcı, eşleşen desenler için belirtilen metin dökümünü hızla filtreleyebilir.

import re
pattern = re.compile('Python')
match = pattern.findall('Python is a great language for writing scripts. Python is easy to learn.')
print(match)

Bu işlev öncelikle kaynak yoğun ve çalıştırılması çok zaman gerektiren kalıpları kaydetmek için kullanılır. Deseni önceden bir nesne olarak derlemek ve kaydetmek bu sorunu çözer.

Python ile Regex'in Gücünden Yararlanın

Metin dosyaları ve çıktılarla çalışırken, regex emrinizde olması için harika bir araçtır. Belgedeki belirli kalıpları filtrelemek veya değiştirmek için hızlı bir şekilde bazı kodlar yazabilirsiniz.

Normal ifadeyle yeni başlıyorsanız, tüm karakterleri ve eşleşen dizileri ezberlemek zor olabilir. Düzenli ifadelerde daha iyi olmak için, arada bir karakter, yöntem ve dizilerden oluşan bir listeye başvurmak uzun vadede kesinlikle size yardımcı olacaktır.

Paylaş Paylaş Cıvıldamak E-posta Tomurcuklanan Programcılar için Python RegEx Hile Sayfası

Bu çok yönlü programlama dilini daha iyi kullanabilmeniz için bu Python düzenli ifadeleri listesini kullanın.

Sonrakini Oku
İlgili konular
  • Programlama
  • Programlama
  • piton
Yazar hakkında Deepesh Sharma(79 Makale Yayımlandı)

Deepesh, MUO'da Linux için Junior Editördür. Tüm yeni gelenlere keyifli bir deneyim sunmayı amaçlayan Linux hakkında bilgilendirici kılavuzlar yazıyor. Filmlerden emin değilim, ama teknoloji hakkında konuşmak istersen, o senin adamın. Boş zamanlarında onu kitap okurken, farklı müzik türleri dinlerken veya gitar çalarken bulabilirsiniz.

Deepesh Sharma'dan Daha Fazla

Haber bültenimize abone ol

Teknik ipuçları, incelemeler, ücretsiz e-kitaplar ve özel fırsatlar için bültenimize katılın!

Abone olmak için buraya tıklayın