⊗jsSpREGL 101 of 294 menu

Godumo apribojimas reguliariosiose išraiškose JavaScript

Regulariosios išraiškos pagal nutylėjimą yra godžios. Tai reiškia, kad jos perima kuo daugiau simbolių, kiek įmanoma. Pažiūrėkime pavyzdžiu. Tarkime, kad turime tokią eilutę:

let 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'.

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

Tikimės, kad į kintamąjį rezultate įrašysime eilutę '! zzz x kkk'. Tačiau, taip neįvyksta - į 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 pat paskutinio x, 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 pirmojo x.

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

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

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

Duota eilutė:

let str = 'aba accca azzza wwwwa';

Parašykite reguliarią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