⊗pyPmREGL 38 of 129 menu

Python-da Regulyar Ifadələrdə Tamağın Məhdudlaşdırılması

Regulyar ifadələr standart olaraq tamaqlıdır. Bu o deməkdir ki, onlar mümkün olan maksimum simvol sayını tutur. Gəlin bir nümunə ilə baxaq. Tutaq ki, bizim belə bir sətirimiz var:

txt = 'aeeex zzz x kkk'

Bu sətirdə biz aşağıdakı şablona görə 'aeeex' alt sətrini tapmaq istəyirik: 'a' hərfi, sonra istənilən simvol bir və ya daha çox dəfə, sonra isə 'x' hərfi:

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

Biz '! zzz x kkk' sətirini almaq istəsək də, '! kkk' sətri çap olunacaq. Bunun səbəbi odur ki, bizim regulyar ifadə 'a' hərfindən 'x' hərfinə qədər olan bütün simvolları axtarır. Amma bizim sətirdə iki 'x' hərfi var! Tamağın təsiri ilə belə olur ki, regulyar ifadə ən son 'x'-ə qədər axtarış edir, beləliklə, bizim istədiyimizdən fərqli bir nəticə əldə edir.

Əlbəttə ki, çox vaxt bu davranış bizim üçün lazımdır. Amma xüsusi bu halda tamağı ləğv etmək və regulyar ifadəyə ilk 'x'-ə qədər axtarmasını demək lazımdır. Bu halda təkrar operatorundan sonra sual işarəsi qoymaq lazımdır:

res = re.sub('a.+?x', '!', txt) print(res) # '! zzz x kkk' sətrini çap edəcək

Tamaq bütün təkrar operatorları üçün məhdudlaşdırıla bilər: həm *, həm ?, həm də {} - belə: *?, ??{}?.

Sətir verilmişdir:

txt = 'aba accca azzza wwwwa'

Hər iki tərəfində 'a' hərfləri olan bütün sətirləri tapan və onların hər birini '!' ilə əvəz edən regulyar ifadə yazın. 'a' hərfləri arasında istənilən simvol ola bilər ('a' istisna olmaqla).

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