⊗pyPmREGL 38 of 129 menu

Godumo apribojimas reguliariosiose išraiškose Python

Reguliariosios išraiškos pagal nutylėjimą yra godžios. Tai reiškia, kad jos perima kuo daugiau simbolių kiek įmanoma. Pažiūrėkime pavyzdžiu. Tarkime, kad turime tokią eilutę:

txt = 'aeeex zzz x kkk'

Šioje eilutėje norime rasti poeilutę 'aeeex' pagal šį šabloną: raidė 'a', tada bet koks simbolis vieną ar daugiau kartų, tada raidė 'x':

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

Nors mums reikia gauti eilutę '! zzz x kkk', bus išvesta eilutė '! kkk'. Visa tai dėl to, kad mūsų reguliarioji išraiška ieško visų simbolių nuo raidės 'a' iki raidės 'x'. Bet mūsų eilutėje yra dvi raidės 'x'! Dėl godumo pasirodo, kad reguliarioji išraiška ieško iki pat paskutinio x, todėl perima ne tai, ko mums reikėjo.

Žinoma, dažnai toks elgesys mums ir reikalingas. Tačiau konkrečiai šiuo atveju reikia atšaukti godumą ir nurodyti reguliariajai išraiškai, kad ji ieškotų iki pirmojo x. Šiuo atveju po pakartojimo operatoriaus reikia padėti klaustuką:

res = re.sub('a.+?x', '!', txt) print(res) # išves eilutę '! zzz x kkk'

Godumą galima apriboti visiems pakartojimo operatoriams: ir *, ir ?, ir {} - štai taip: *?, ?? ir {}?.

Duota eilutė:

txt = 'aba accca azzza wwwwa'

Parašykite reguliariąją išraišką, kuri ras visas eilutes, kurių kraštuose yra raidės 'a', ir kiekvieną iš jų pakeis '!'. Tarp raidžių 'a' gali būti bet koks simbolis (išskyrus 'a').

Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti