⊗ppPmRgGL 229 of 447 menu

Regulaaravaldiste ahnuse piiramine PHP-s

Regulaaravaldised on vaikimisi ahnad. See tähendab, et nad püüavad kinni võimalikult palju sümboleid.

Vaatame seda näitega. Oletame, et meil on järgmine string:

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

Oletame, et selles stringis soovime leida alamstringi 'aeeex' järgmise mustri järgi: täht 'a', seejärel suvaline sümbol üks või enam kordi, seejärel täht 'x'.

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

Ootame, et muutujasse kirjutatakse tulemusena string '! zzz x kkk'. Siiski, nii ei juhtu - muutujasse satub string '! kkk'.

Asi on selles, et meie regulaaravaldis otsib kõiki sümboleid tähest 'a' kuni täheni 'x'. Kuid meie stringis on kaks tähte 'x'. Ahnuse tõttu juhtub nii, et regulaaravaldis otsib kuni viimase 'x'-ni, haarates seeläbi mitte seda, mida me ootasime.

Muidugi on selline käitumine sageli just see, mida me vajame. Kuid konkreetsel juhul sooviksime ahnust tühistada ja öelda regulaaravaldisele, et see otsiks esimest 'x'-i.

Ahnuse piiramiseks tuleb kordusoperaatori järele panna küsimärk:

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

Ahnust saab piirata kõikidele kordusoperaatoritele, nagu nii: *?, ?? ja {}?.

Antud string:

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

Kirjutage regulaaravaldis, mis leiab kõik stringid, mille mõlemas otsas on tähed 'a', ja asendab igaühe neist '!'-ga. Tähtede a vahel võib olla suvaline sümbol (välja arvatud 'a').

Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu