⊗pyPmREESCh 36 of 129 menu

Python-da Regulyar Ifadələrdə Xüsusi Simvolların Qarşısının Alınması

Tutaq ki, xüsusi simvolun özünü ifadə etməsini istəyirik. Bunun üçün onun qarşısını tərs çəpi ilə almaq lazımdır. Gəlin nümunələrlə baxaq.

Nümunə

Aşağıdakı nümunədə regulyar ifadənin müəllifi axtarış şablonunun hərf 'a', sonra plus '+', sonra hərf 'x' kimi görünməsini istəyirdi. Lakin, kodun müəllifi '+' simvolunun qarşısını almadığı üçün əslində axtarış şablonu belə görünür: hərf 'a' bir və ya daha çox dəfə, sonra hərf 'x':

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

Kodun icrasının nəticəsi:

'a+x ! ! !'

Nümunə

İndi isə müəllif plusun qarşısını tərs çəpi ilə aldı. İndi axtarış şablonu lazım olduğu kimi görünür: hərf 'a', sonra plus '+', sonra hərf 'x':

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

Kodun icrasının nəticəsi:

'! ax aax aaax'

Nümunə

Bu nümunədə şablon belə görünür: hərf 'a', sonra nöqtə '.', sonra hərf 'x':

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

Kodun icrasının nəticəsi:

'! abx azx'

Nümunə

Aşağıdakı nümunədə müəllif nöqtənin qarşısını almağı unudub və regulyar ifadə bütün alt sətirlərə uyğun gəldi, çünki qarşısı alınmamış nöqtə hər hansı bir simvolu ifadə edir:

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

Kodun icrasının nəticəsi:

'! ! !'

Qeyd

Diqqət edin ki, əgər siz nöqtə üçün tərs çəpi unutsanız (o özünü ifadə etməlidirsə) - bunu heç hiss etməyə bilərsiniz:

res = re.sub('a.x', '!', 'a.x') print(res) # '!' qaytaracaq, bizim istədiyimiz kimi

Vizual olaraq düzgün işləyir (çünki nöqtə hər hansı bir simvolu, o cümlədən adi nöqtəni '.' ifadə edir). Lakin əgər əvəz olunan sətiri dəyişsək - səhvimizi görəcəyik:

res = re.sub('a.x', '!', 'a.x abx azx') print(res) # '! ! !' qaytaracaq, gözlənilirdi '! abx azx'

Xüsusi simvolların və adi simvolların siyahısı

Əgər adi simvolun qarşısını alsanız - heç bir dəhşətli şey baş verməz - o yenə də özünü ifadə edəcək. İstisna - rəqəmlər, onların qarşısını almaq olmaz.

Tez-tez bu və ya digər simvolun xüsusi olub-olmadığı barədə şübhə yaranır. Bəziləri bütün şübhəli simvolların qarşısını bir-bir almağa qədər gedirlər. Lakin, bu pis bir təcrübədir (regulyar ifadəni tərs çəpi ilə qarışdırır).

Xüsusi simvollar bunlardır: $ ^ . * + ? \ / {} [] () |

Xüsusi simvol olmayanlar: @ : , ' " - _ = < > % # ~ `& !

Praktiki tapşırıqlar

Sətir verilmişdir:

txt = 'a.a aba aea'

'a.a' sətirini tapacaq, digərlərini tutmayan regulyar ifadə yazın.

Sətir verilmişdir:

txt = '2+3 223 2223'

'2+3' sətirini tapacaq, digərlərini tutmayan regulyar ifadə yazın.

Sətir verilmişdir:

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

'2+3', '2++3', '2+++3' sətirlərini tapacaq, digərlərini tutmayan regulyar ifadə yazın (+ istənilən sayda ola bilər).

Sətir verilmişdir:

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

'23', '2+3', '2++3', '2+++3' sətirlərini tapacaq, digərlərini tutmayan regulyar ifadə yazın.

Sətir verilmişdir:

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

'*q+', '*qq+', '*qqq+' sətirlərini tapacaq, digərlərini tutmayan regulyar ifadə yazın.

Sətir verilmişdir:

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

Kvadrat mötərizələrdə olan sətirləri tapacaq və onları '!' ilə əvəz edən regulyar ifadə yazın.

Azərbaycan
AfrikaansБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Biz saytin işi, analitika və fərdiləşdirmə üçün cookie istifadə edirik. Məlumatların emalı Məxfilik Siyasəti əsasında həyata keçirilir.
hamısını qəbul et konfiqurasiya et rədd et