⊗pyPmRELAB 72 of 129 menu

Python Regular İfadələrində Müsbət və Mənfi Qabaqcadan Baxış

Bəzən bu tip məsələni həll etmək lazım gəlir: 'aaa' sətirini tapın və onu '!' ilə əvəz edin, ancaq əgər 'aaa'-dan sonra 'x' gəlirsə, özü 'x' isə əvəz edilməməlidir. Əgər biz məsələni 'birbaşa' həll etməyə çalışsaq, heç nə alınmayacaq:

txt = 'aaax baaa' res = re.sub('aaax', '!', txt) print(res) # çap edəcək '! baaa', istədiyimiz isə '!x baaa' idi

Qabaqcadan Baxış

Məsələni həll etmək üçün bir üsul lazımdır ki, 'x'-in əvəz edilməməli olduğunu göstərsin. Bu, xüsusi mötərizələr (?= ) ilə edilir, onlar sadəcə baxır, lakin özləri ilə götürmürlər.

Bu mötərizələr müsbət qabaqcadan baxış adlanır. Müsbət - çünki 'x' (bizim vəziyyətimizdə) olmalıdır - yalnız o zaman əvəzetmə baş verəcək.

Gəlin bu mötərizələri məsələmizi həll etmək üçün tətbiq edək:

txt = 'aaax baaa' res = re.sub('aaa(?=x)', '!', txt) print(res) # çap edəcək '!x aaab

Mənfi qabaqcadan baxış da var - (?! ) - o, əksinə, deyir ki, bir şey olmamalıdır. Aşağıdakı nümunədə, əvəzetmə yalnız o zaman baş verəcək ki, 'aaa'-dan sonra 'x' OLMASIN:

txt = 'aaax aaab' res = re.sub('aaa(?!x)', '!', txt) print(res) # çap edəcək 'aaax !b'

Geriyə Baxış

Eyni qaydada müsbət geriyə baxış da var - (?<= ). Aşağıdakı nümunədə əvəzetmə yalnız o zaman baş verəcək ki, 'aaa'-dan əvvəl 'x' olsun:

txt = 'xaaa' res = re.sub('(?<=x)aaa', '!', txt) print(res) # çap edəcək 'x!'

Həmçinin mənfi geriyə baxış da var - (?<! ). Aşağıdakı nümunədə əvəzetmə yalnız o zaman baş verəcək ki, 'aaa'-dan əvvəl 'x' OLMASIN:

txt = 'baaa' res = re.sub('(?<!x)aaa', '!', txt) print(res) # çap edəcək 'b!'

Praktik Məsələlər

Funksiya adlarını özündə cəmləşdirən sətir verilib:

txt = 'func1() func2() func3()'

Sətirdən funksiya adlarının massivini əldə edin.

Teqli sətir verilib:

txt = '<a href="" class="eee" id="zzz">'

Bu tegin atribut adlarının massivini əldə edin.

Dəyişənlər olan sətir verilib:

txt = '$aaa $bbb $ccc xxxx'

Qarşısında dollar işarəsi olan alt sətirləri əldə edin.

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