⊗jsSpREGL 101 of 294 menu

Obmedzenie chamivosti v regulárnych výrazoch v JavaScripte

Regulárne výrazy sú predvolene chamivé. To znamená, že zachytávajú maximálne možný počet znakov. Poďme si to rozobrať na príklade. Nech máme takýto reťazec:

let str = 'aeeex zzz x kkk';

Nech chceme v tomto reťazci nájsť podreťazec 'aeeex' podľa nasledujúceho vzoru: písmeno 'a', potom ľubovoľný znak jeden alebo viac krát, potom písmeno 'x'.

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

Očakávame, že do premennej sa ako výsledok zapíše reťazec '! zzz x kkk'. Avšak, nie je to tak - do premennej sa dostane reťazec '! kkk'.

Celé je to o tom, že náš regulárny výraz hľadá všetky znaky od písmena 'a' po písmeno 'x'. Ale v našom reťazci sú dve písmená 'x'! Kvôli chamivosti sa stane, že regulárny výraz hľadá až do úplne posledného x, tým pádom zachytáva nie to, čo sme očakávali.

Samozrejme, často je toto správanie presne to, čo potrebujeme. Ale konkrétne v tomto prípade by sme chceli zrušiť chamivosť a povedať regulárnemu výrazu, aby hľadal len do prvého x.

Na obmedzenie chamivosti je potrebné po operátori opakovania umiestniť otáznik:

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

Chamivosť možno obmedziť všetkým operátorom opakovania: aj *, aj ?, aj {} - takto: *?, ?? a {}?.

Daný reťazec:

let str = 'aba accca azzza wwwwa';

Napíšte regulárny výraz, ktorý nájde všetky reťazce na whose okrajoch sú písmená 'a', a nahradí každý z nich na '!'. Medzi písmenami 'a' môže byť ľubovoľný znak (okrem 'a').

Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť