⊗ppPmRgGL 229 of 447 menu

Regularās izteiksmes alkatības ierobežošana PHP

Regularās izteiksmes pēc noklusējuma ir alkatīgas. Tas nozīmē, ka tās saglabā maksimālo iespējamo simbolu daudzumu.

Analizēsim to ar piemēru. Pieņemsim, ka mums ir šāda virkne:

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

Pieņemsim, ka šajā virknē vēlamies atrast apakšvirkni 'aeeex' pēc šāda parauga: burts 'a', pēc tam jebkura simbols viens vai vairāk reizes, pēc tam burts 'x'.

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

Mēs sagaidām, ka mainīgā rezultātā tiks ierakstīta virkne '! zzz x kkk'. Tomēr tā nenotiek - mainīgā nonāk virkne '! kkk'.

Lieta ir tajā, ka mūsu regulārā izteiksme meklē visus simbolus no burta 'a' līdz burtam 'x'. Bet mūsu virknē ir divi burti 'x'. Alkātības dēļ izrādās, ka regulārā izteiksme meklē līdz pat pēdējam x, tādējādi saglabājot nevis to, ko mēs gaidījām.

Protams, bieži vien šāda uzvedība mums ir vajadzīga. Bet tieši šajā gadījumā mēs vēlētos atcelt alkatību un likt regulārajai izteiksmei meklēt līdz pirmajam x.

Lai ierobežotu alkatību, aiz atkārtošanās operatora jāievieto jautājuma zīme:

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

Alkatību var ierobežot visiem atkārtošanās operatoriem, šeit: *?, ?? un {}?.

Dota virkne:

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

Uzrakstiet regulāro izteiksmi, kas atradīs visas virknes, kuru malās atrodas burti 'a', un aizstās katru no tām ar '!'. Starp btiem a var būt jebkurš simbols (izņemot 'a').

Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt