⊗pyPmREGL 38 of 129 menu

Regulaaravaldiste ahnuse piiramine Pythonis

Regulaaravaldised on vaikimisi ahnad. See tähendab, et nad püüavad kinni võimalikult palju sümboleid. Vaatame seda näitega. Oletame, et meil on järgmine sõne:

txt = 'aeeex zzz x kkk'

Selles sõnes soovime leida alamstringi 'aeeex' järgmise mustri järgi: täht 'a', siis suvaline sümbol üks või mitu korda, siis täht 'x':

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

Kuigi me peaksime saama stringi '! zzz x kkk', kuvatakse string '! kkk'. Asi on selles, et meie regulaaravaldis otsib kõiki sümboleid tähest 'a' kuni täheni 'x'. Kuid meie sõnes on kaks tähte 'x'! Ahnuse tõttu juhtub nii, et regulaaravaldis otsib kuni viimase 'x'-ni, haarates seeläbi mitte seda, mida meil vaja oli.

Muidugi on selline käitumine sageli just see, mida me vajame. Kuid sellisel juhul on vaja ahnust keelata ja öelda regulaaravaldisele, et see otsiks kuni esimese 'x'-ni. Sel juhul tuleks kordusoperaatori järel panna küsimärk:

res = re.sub('a.+?x', '!', txt) print(res) # väljastab stringi '! zzz x kkk'

Ahnust saab piirata kõikidele kordusoperaatoritele: nii *, kui ?, ja {} - niimoodi: *?, ?? ja {}?.

Antud sõne:

txt = 'aba accca azzza wwwwa'

Kirjutage regulaaravaldis, mis leiab kõik stringid, mille mõlemas otsas on tähed 'a', ja asendab igaühe neist '!'-ga. Tähtede 'a' vahel võib olla suvaline sümbol (välja arvatud 'a').

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