⊗ppPmRgGL 229 of 447 menu

Omejitev pohlepa v regularnih izrazih v PHP

Regularni izrazi so privzeto pohlepni. To pomeni, da zajamejo največje možno število znakov.

Poglejmo si primer. Recimo, da imamo takšno vrstico:

<?php $str = 'aeeex zzz x kkk'; ?>

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

<?php $res = preg_replace('#a.+x#', '!', $str); ?>

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

Bistvo je v tem, da naš regularni izraz išče vse znake od črke 'a' do črke 'x'. Toda v našem nizu sta dve črki 'x'. Zaradi pohlepa se izkaže, da regularni izraz išče do zadnjega 'x', s čimer zajame nekaj drugega, kot smo pričakovali.

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

Za omejitev pohlepa morate za operatorjem ponavljanja postaviti vprašaj:

<?php $res = preg_replace('#a.+?x#', '!', $str); ?>

Pohlep je mogoče omejiti vsem operatorjem ponavljanja, takole: *?, ?? in {}?.

Podan je niz:

<?php $str = 'aba accca azzza wwwwa'; ?>

Napišite regularni izraz, ki bo našel vse nize, na whose robovih so črke 'a', in jih zamenjaj s '!'. 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