⊗ppPmRgGL 229 of 447 menu

Godumo apribojimas reguliariosiose išraiškose PHP

Reguliariosios išraiškos pagal nutylėjimą yra godžios. Tai reiškia, kad jos perima kuo daugiau simbolių.

Paaiškinkime pavyzdžiu. Tarkime, kad turime tokią eilutę:

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

Tarkime, kad šioje eilutėje norime rasti poeilutę 'aeeex' pagal šį šabloną: raidė 'a', tada bet koks simbolis vieną ar daugiau kartų, tada raidė 'x'.

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

Tikimės, kad į kintamąjį rezultate bus įrašyta eilutė '! zzz x kkk'. Tačiau, taip nėra - į kintamąjį pateikia eilutė '! kkk'.

Visa tai dėl to, kad mūsų reguliarioji išraiška ieško visų simbolių nuo raidės 'a' iki raidės 'x'. Bet mūsų eilutėje yra dvi raidės 'x'. Dėl godumo pasirodo, kad reguliarioji išraiška ieško iki pačios paskutinės x raidės, taip perimdama ne tai, ko tikėjomės.

Žinoma, dažnai toks elgesys mums ir reikalingas. Bet konkrečiai šiuo atveju mes norėtume atšaukti godumą ir nurodyti reguliariajai išraiškai, kad ji ieškotų iki pirmos x raidės.

Norint apriboti godumą, reikia po pasikartojimo operatoriaus įdėti klaustuką:

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

Godumą galima apriboti visiems pasikartojimo operatoriams, štai taip: *?, ?? ir {}?.

Duota eilutė:

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

Parašykite reguliąją išraišką, kuri ras visas eilutes, kurių kraštuose yra raidės 'a', ir kiekvieną iš jų pakeis '!'. Tarp raidžių a gali būti bet koks simbolis (išskyrus 'a').

Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti