⊗jsSpREGL 101 of 294 menu

Regularās izteiksmes mantkārības ierobežošana JavaScript

Regularās izteiksmes pēc noklusējuma ir mantkārīgas. Tas nozīmē, ka tās notver pēc iespējas vairāk rakstzīmes. Analizēsim to ar piemēru. Pieņemsim, ka mums ir šāda virkne:

let str = 'aeeex zzz x kkk';

Pieņemsim, ka šajā virknē vēlamies atrast apakšvirkni 'aeeex' saskaņā ar šādu veidni: burts 'a', pēc tam jebkura rakstzīme vienu vai vairāk reizes, pēc tam burts 'x'.

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

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 regularā izteiksme meklē visas rakstzīmes no burta 'a' līdz burtam 'x'. Bet mūsu virknē ir divi burti 'x'! Mantkārības dēļ izrādās, ka regularā izteiksme meklē līdz pat pēdējā x, tādējādi notverot ne 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 mantkārību un likt regularajai izteiksmei meklēt līdz pirmajam x.

Lai ierobežotu mantkārību, aiz atkārtojuma operatora jāieliek jautājuma zīme:

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

Mantkārību var ierobežot visiem atkārtojuma operatoriem: gan *, gan ?, gan {} - šādi: *?, ?? un {}?.

Dota virkne:

let str = 'aba accca azzza wwwwa';

Uzrakstiet regularu izteiksmi, kas atradīs visas virknes, kuru malās ir burti 'a', un aizvietos katru no tām ar '!'. Starp burtiem 'a' var būt jebkura rakstzīme (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