⊗pyPmREESCh 36 of 129 menu

Python'da Düzenli İfadelerde Özel Karakterlerin Kaçışı

Bir özel karakterin kendisini temsil etmesini sağlamamız gerektiğini varsayalım. Bunun için karakteri ters eğik çizgi ile kaçışlamalıyız. Örneklerle inceleyelim.

Örnek

Aşağıdaki örnekte, regex yazarı arama kalıbının harf 'a', ardından artı '+', ardından harf 'x' şeklinde olmasını istedi. Ancak, kod yazarı '+' karakterini kaçışlamadığı için arama kalıbı aslında şu şekildedir: harf 'a' bir veya daha fazla kez, sonra harf 'x':

txt = 'a+x ax aax aaax' res = re.sub('a+x', '!', txt) print(res)

Kodun çalıştırılmasının sonucu:

'a+x ! ! !'

Örnek

Şimdi yazar artı işaretini ters eğik çizgi ile kaçışlattı. Artık arama kalıbı olması gerektiği gibi görünüyor: harf 'a', ardından artı '+', ardından harf 'x':

txt = 'a+x ax aax aaax' res = re.sub('a\+x', '!', txt) print(res)

Kodun çalıştırılmasının sonucu:

'! ax aax aaax'

Örnek

Bu örnekte, kalıp şu şekildedir: harf 'a', ardından nokta '.', ardından harf 'x':

txt = 'a.x abx azx' res = re.sub('a\.x', '!', txt) print(res)

Kodun çalıştırılmasının sonucu:

'! abx azx'

Örnek

Aşağıdaki örnekte yazar eğik çizgiyi kaçışlamayı unuttu ve regex tüm alt dizileri yakaladı, çünkü kaçışlanmamış nokta herhangi bir karakteri temsil eder:

txt = 'a.x abx azx' res = re.sub('a.x', '!', txt) print(res)

Kodun çalıştırılmasının sonucu:

'! ! !'

Not

Eğer bir nokta için ters eğik çizgiyi unutursanız (ne zaman kendisini temsil etmesi gerekiyorsa) - bunu fark etmeyebilirsiniz bile:

res = re.sub('a.x', '!', 'a.x') print(res) # beklediğimiz gibi '!' döndürür

Görsel olarak doğru çalışıyor (çünkü nokta herhangi bir karakteri temsil eder, aynı zamanda normal bir noktayı da '.'). Ancak eğer değiştirmelerin yapıldığı dizgiyi değiştirirsek - hatamızı göreceğiz:

res = re.sub('a.x', '!', 'a.x abx azx') print(res) # '! ! !' döndürür, beklenen '! abx azx' idi

Özel karakterlerin ve normal karakterlerin listesi

Eğer normal bir karakteri kaçışlarsanız - hiçbir sorun olmaz - yine kendisini temsil edecektir. İstisna - rakamlar, onlar kaçışlanamaz.

Sık sık, belirli bir karakterin özel olup olmadığı konusunda şüphe doğar. Bazıları şüpheli tüm karakterleri sırayla kaçışlama noktasına kadar varır. Ancak, bu kötü bir alışkanlıktır (regex'i ters eğik çizgilerle kirletir).

Özel karakterlerdir: $ ^ . * + ? \ / {} [] () |

Özel karakter değildir: @ : , ' " - _ = < > % # ~ `& !

Pratik görevler

Bir dizgi verildi:

txt = 'a.a aba aea'

'a.a' dizgisini bulan, diğerlerini yakalamayan bir düzenli ifade yazın.

Bir dizgi verildi:

txt = '2+3 223 2223'

'2+3' dizgisini bulan, diğerlerini yakalamayan bir düzenli ifade yazın.

Bir dizgi verildi:

txt = '23 2+3 2++3 2+++3 345 567'

'2+3', '2++3', '2+++3' dizgilerini bulan, diğerlerini yakalamayan bir düzenli ifade yazın (+ herhangi bir sayıda olabilir).

Bir dizgi verildi:

txt = '23 2+3 2++3 2+++3 445 677'

'23', '2+3', '2++3', '2+++3' dizgilerini bulan, diğerlerini yakalamayan bir düzenli ifade yazın.

Bir dizgi verildi:

txt = '*+ *q+ *qq+ *qqq+ *qqq qqq+'

'*q+', '*qq+', '*qqq+' dizgilerini bulan, diğerlerini yakalamayan bir düzenli ifade yazın.

Bir dizgi verildi:

txt = '[abc] {abc} abc (abc) [abc]'

Köşeli parantezler içindeki dizgileri bulup onları '!' ile değiştiren bir düzenli ifade yazın.

Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet