⊗jsSpREGL 101 of 294 menu

Ograničavanje pohlepe u regularnim izrazima u JavaScriptu

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

let str = 'aeeex zzz x kkk';

Pretpostavimo da 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'.

let res = str.replace(/a.+x/g, '!');

Očekujemo da će se u promenljivu kao rezultat upisati string '! zzz x kkk'. Međutim, nije tako - u promenljivu se upisuje string '! kkk'.

Stvar je u tome što naš regularni izraz traži sve karaktere od slova 'a' do slova 'x'. Ali u našem stringu postoja dva slova 'x'! Zbog pohlepe se ispostavlja da regularni izraz traži do poslednjeg 'x', time hvatajući ne ono što smo očekivali.

Naravno, često je takvo ponašanje upravo ono što nam treba. Ali konkretno u ovom slučaju želeli bismo da isključimo pohlepu i kažemo regularnom izrazu da traži do prvog 'x'.

Da bismo ograničili pohlepu, potrebno je posle operatora ponavljanja staviti znak pitanja:

let res = str.replace(/a.+?x/g, '!');

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

Dat je string:

let str = '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