⊗jsSpREGL 101 of 294 menu

Omejitev požrešnosti v regularnih izrazih v JavaScript

Regularni izrazi so privzeto požrešni. To pomeni, da zajamejo največje možno število znakov. Razložimo s primerom. Recimo, da imamo takšno verigo:

let str = 'aeeex zzz x kkk';

Recimo, da v tej verigi želimo najti podverigo 'aeeex' po naslednjem vzorcu: črka 'a', nato kateri koli znak enkrat ali večkrat, nato črka 'x'.

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

Pričakujemo, da se bo v spremenljivko kot rezultat zapisala veriga '! zzz x kkk'. Vendar ni tako - v spremenljivko pride veriga '! kkk'.

Bistvo je v tem, da naš regularni izraz išče vse znake od črke 'a' do črke 'x'. Toda v naši verigi sta dve črki 'x'! Zaradi požrešnosti se izkaže, da regularni izraz išče do zadnjega x, s čimer zajame nekaj, česar nismo pričakovali.

Seveda je takšno vedenje pogosto točkar to, kar potrebujemo. Toda ravno v tem primeru bi želeli preklicati požrešnost in reči regularnemu izrazu, naj išče do prvega x.

Za omejitev požrešnosti je treba za operatorjem ponavljanja postaviti vprašaj:

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

Požrešnost je mogoče omejiti vsem operatorjem ponavljanja: tako *, kot ?, in {} - takole: *?, ?? in {}?.

Podana je veriga:

let str = 'aba accca azzza wwwwa';

Napišite regularni izraz, ki bo našel vse verige na katerih robovih so črke 'a', in jih zamenjal z '!'. Med črkama 'a' je lahko kateri koli znak (razen 'a').

Slovenščina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni