⊗pyPmRELAB 72 of 129 menu

Positiivne ja negatiivne otsing Pythoni regulaaravaldistes

Mõnikord on vaja lahendada sellist tüüpi ülesanne: leida string 'aaa' ja asendada see stringiga '!', kuid ainult siis, kui pärast 'aaa' on 'x', kuid 'x' ennast ei tohi asendada. Kui me püüame lahendada ülesannet 'täiesti otse', siis meil ei õnnestu:

txt = 'aaax baaa' res = re.sub('aaax', '!', txt) print(res) # väljund '! baaa', kuid sooviti '!x baaa'

Edasiotsing

Ülesande lahendamiseks on vaja viisi öelda, et 'x'-d ei tohiks asendada. Seda tehakse spetsiaalsete sulgude abil (?= ), mis lihtsalt otsivad, kuid ei võta endaga kaasa.

Neid sulge nimetatakse positiivseks edasiotsinguks. Positiivne - kuna 'x' (meie puhul) peab olema - ainult siis toimub asendus.

Rakendame neid sulge meie ülesande lahendamiseks:

txt = 'aaax baaa' res = re.sub('aaa(?=x)', '!', txt) print(res) # väljund '!x aaab

On olemas ka negatiivne edasiotsing - (?! ) - see, vastupidi, ütleb, et midagi ei tohi olla. Järgmises näites toimub asendus ainult siis, kui pärast 'aaa' ei ole 'x':

txt = 'aaax aaab' res = re.sub('aaa(?!x)', '!', txt) print(res) # väljund 'aaax !b'

Tagasiotsing

Samamoodi on olemas positiivne tagasiotsing - (?<= ). Järgmises näites toimub asendus ainult siis, kui enne 'aaa' on 'x':

txt = 'xaaa' res = re.sub('(?<=x)aaa', '!', txt) print(res) # väljund 'x!'

Ja on ka negatiivne tagasiotsing - (?<! ). Järgmises näites toimub asendus ainult siis, kui enne 'aaa' ei ole 'x':

txt = 'baaa' res = re.sub('(?<!x)aaa', '!', txt) print(res) # väljund 'b!'

Praktilised ülesanded

Antud on funktsioonide nimesid sisaldav string:

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

Saage stringist funktsioonide nimede massiiv.

Antud on siltiga string:

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

Saage selle sildi atribuutide nimede massiiv.

Antud on muutujatega string:

txt = '$aaa $bbb $ccc xxxx'

Saage alamstringid, mille ees on dollari sümbol.

Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu