⊗pyPmREGL 38 of 129 menu

Ograničavanje pohlepe u regularnim izrazima u Pythonu

Regularni izrazi su podrazumevano pohlepni. To znači da oni hvataju maksimalan mogući broj karaktera. Hajde da razmotrimo na primeru. Pretpostavimo da imamo ovakav string:

txt = 'aeeex zzz x kkk'

U ovom stringu želimo da pronađemo podstring 'aeeex' prema sledećem šablonu: slovo 'a', zatim bilo koji karakter jedan ili više puta, zatim slovo 'x':

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

Iako očekujemo string '! zzz x kkk', ispisaće se string '! kkk'. Ceo problem je u tome što naš regularni izraz traži sve karaktere od slova 'a' do slova 'x'. Ali u našem stringu ima dva slova 'x'! Zbog pohlepe ispada da regularni izraz traži do poslednjeg slova x, time hvatajući nešto što nam nije bilo potrebno.

Naravno, često nam je takvo ponašanje i potrebno. Ali konkretno u ovom slučaju treba iskљučiti pohlepu i reći regularnom izrazu, da traži do prvog slova x. U ovom slučaju treba posle operatora ponavljanja dodati znak pitanja:

res = re.sub('a.+?x', '!', txt) print(res) # ispisaće string '! zzz x kkk'

Pohlepu možemo ograničiti svim operatorima ponavljanja: i *, i ?, i {} - ovako: *?, ?? i {}?.

Dat je string:

txt = 'aba accca azzza wwwwa'

Napišite regularni izraz koji će pronaći sve stringove na čijim krajevima stoje slova 'a', i zameniti svaki od njih sa '!'. Između slova 'a' može biti bilo koji karakter (osim 'a').

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij