Bir programcıysanız, normal ifadelerin (regex) ne olduğunu zaten biliyorsunuzdur. Normal ifade kalıpları hemen hemen her ana 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ğiniz hakkındadır.

Normal İfadeler Nedir?

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, bunların 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üne ilişkin farkındalık eksikliğidir. Hatta bazıları, kalıplarda kullanılan çok sayıda karakter ve diziden dolayı normal ifadeleri kafa karıştırıcı buluyor.

instagram viewer

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

Normal İfadeler: Eşleşen Karakterler ve Sıralar

Regex başlı başına yepyeni bir dildir. Bir normal ifade motoru, belirli anlamlarla donatılmış birkaç karakterden oluşan kalıpları yorumlar. Alfasayısal karakterler gibi temel değişmez değerler kendileriyle eşleşir. Ancak $, *, +, {vb. Gibi karmaşık karakterler daha yüksek sıralı 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ı "Eleman n kez çarpıldı" olacaktır. Örneğin, normal ifade ABC*, eşleşen dizeler ab, abc, abcc, abccc, abcccc vb. olacaktır. İfade [M.Ö]* bc, bcbc, bcbc vb. ile eşleşir.
  2. Artı (+): Önceki karakterle bir veya daha fazla kez eşleşir. Çalışması + karakter benzer *, ama + karakter oluşmazsa karakter kalıbı atlar. Örneğin, abc + abc, abcc, abccc vb. ile eşleşir. ama ab değil.
  3. Soru işareti (?): Ö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. Borudan önceki ve sonraki karakterlerden 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 kelimelerle eşleşecek Ra Tavşan, Rakun ve Rastgele gibi.
  7. Dolar ($): Desendeki son karakterle eşleşir. Örneğin, bir $ ile biten kelimelerle eşleşecek 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.

Normal ifade desenlerinde kullanılan özel diziler şunlardır:

  1. \ A: Dizenin başında sonraki karakterler varsa bir eşleşme döndürür. Örneğin, \ AThe ile başlayan kelimelerle eşleşecek The, Them, They, vb. gibi
  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 bulunmazsa bir eşleşme döndürür.
  4. \ d: Dizede bulunan sayısal karakterlerle eşleşir. Örneğin, /d* 1, 12, 1232 vb. sayılarla eşleşir.
  5. \ D: Dizedeki sayısal olmayan karakterlerle eşleşir. / D 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. \ w: Dize, alt çizgiler dahil alfasayısal karakterler içeriyorsa bir eşleşme döndürür. Örneğin, \ w a, b, c, d, 1, 2, 3 vb. ile eşleşir.
  9. \ W: Dize alfasayısal karakterler veya alt çizgi içermiyorsa bir eşleşme döndürür.
  10. \ Z: Bir dizenin sonundaki karakterlerle eşleşir. Örneğin, bitiş \ Z ile biten kelimelerle eşleşecek son bükülme, onarma, eğilme vb.

Normal İfadeler için Python Yöntemleri

Python'da yeniden kitaplık, programlarınızda regex'i 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.

İthal etmek için yeniden Python'daki kitaplık, aşağıdaki kodu komut dosyanıza ekleyin:

yeniden ithal

Python'da normal ifadeleri iletirken, gibi özel karakterleri yorumlamadıkları için ham dizeler kullandığımızı unutmayın. \ n ve \ t farklı.

Eşleşme()

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

re.match (desen, dize)

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

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

yeniden ithal
match = re.match (r'Word ', "Bu cümle bir Kelime içerir")
baskı (eşleştirme)

r dizeden önceki karakter ham dizeyi ifade eder.

Çıktı:

Yok

Yukarıda belirtilen kod, Yok Çünkü Kelime dizenin başında mevcut değildi.

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

yeniden ithal
match = re.match (r'Word ', "Kelimeyi okumak zor")
baskı (eşleşme grubu (0))

Çıktı:

Kelime

Arama()

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.

yeniden ithal
match = re.search (r'Word ', "Bu cümle bir Kelime içerir. Kelimeyi okumak zor. ")
baskı (eşleşme grubu (0))

Unutmayın ki eşleşme() 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. Ama arama() işlevi yalnızca sözcüğün ilk geçtiği yerle eşleşir.

Kelime

Hepsini bul()

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

yeniden ithal
match = re.search (r'Word ', "Bu cümle bir Kelime içerir. Kelimeyi okumak zor. ")
maçtaki elem için:
baskı (elem)

Bir normal ifade 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ölünmüş()

Bir dizeyi sınırlayıcı olarak bir desen kullanarak alt dizelere bölmek istiyorsanız, o zaman Bölünmüş() fonksiyon ihtiyacınız olan şeydir.

yeniden ithal
split = re.split (r'and ', "Bu kelime ve o ve bu farklı.")
baskı (bölme)

Çıktı:

['Bu kelime "," o "," bu farklı. "]

Alt()

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 (kalıp, değiştirme, dize)

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

yeniden ithal
sonuç = re.sub (r'and ',' veya ', "Dave ve Harry cezalandırılmalıdır.")
baskı (sonuç)

Çıktı:

Dave veya Harry cezalandırılmalıdır.

Derle ()

yeniden. yığın () yöntem yeniden kütüphane, kullanıcının hafızada düzenli ifade modelinin derlenmiş bir versiyonunu saklamasına izin verir. Ardından, derlenmiş nesneyi kullanarak, kullanıcı eşleşen desenler için belirtilen metin dökümünü hızlı bir şekilde filtreleyebilir.

yeniden ithal
pattern = re.compile ('Python')
match = pattern.findall ("Python, komut dosyaları yazmak için harika bir dildir. Python öğrenmesi kolaydır. ")
baskı (eşleştirme)

Bu işlev, öncelikle yoğun kaynak gerektiren 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ıyla çalışırken, regex emrinizde olması için harika bir araçtır. Belgedeki belirli kalıpları filtrelemek veya ikame etmek için hızlı bir şekilde bazı kodlar yazabilirsiniz.

Normal ifadeye yeni başlıyorsanız, tüm karakterleri ve eşleşen dizileri ezberlemek zor olabilir. Normal ifadelerde daha iyi olmak için, ara sıra bir karakter listesine, yöntemlere ve dizilere başvurmak, uzun vadede kesinlikle size yardımcı olacaktır.

E-posta adresi
Yeni Gelişen Programcılar için Python RegEx Hile Sayfası

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

Sonrakini Oku

İlgili konular
  • Programlama
  • Programlama
  • Python
Yazar hakkında
Deepesh Sharma (41 Makale Yayınlandı)

Deepesh, MUO'nun Linux için Junior Düzenleyicisidir. 3 yıldan fazla bir süredir internette bilgilendirici içerik yazıyor. Boş zamanlarında yazmayı, müzik dinlemeyi ve gitar çalmayı sever.

Deepesh Sharma'dan Daha Fazla

Haber bültenimize abone ol

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

Bir adım daha…!

Lütfen size az önce gönderdiğimiz e-postadaki e-posta adresinizi onaylayın.

.