⊗jsSpREGL 101 of 294 menu

Абмежаванне прагнасці ў рэгулярках у JavaScript

Рэгулярныя выразы па змаўчанні прагныя. Гэта значыць, што яны захопліваюць максімальна магчымую колькасць сімвалаў. Давайце разбярэм на прыкладзе. Хай у нас ёсць вось такая радок:

let str = 'aeeex zzz x kkk';

Хай мы ў гэтай радку хочам знайсці падрадок 'aeeex' па наступным шаблоне: літара 'a', затым любы сімвал адзін ці больш разоў, затым літара 'x'.

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

Мы чакаем, што ў зменную ў выніку запішацца радок '! zzz x kkk'. Аднак, гэта не так - у зменную трапляе радок '! kkk'.

Усё дзела ў тым, што наша рэгулярка шукае ўсе сімвалы ад літары 'a' да літары 'x'. Але ў нашай радку дзве літары 'x'! З-за прагнасці атрымліваецца, што рэгулярка шукае да самага апошняга ікса, тым самым захопліваючы не тое, што мы чакалі.

Вядома, часта такая паводзіны нам і трэба. Але менавіта ў гэтым выпадку мы б хацелі адмяніць прагнасць і сказаць рэгулярцы, каб яна шукала да першага ікса.

Каб абмежаваць прагнасць, трэба пасля аператара паўтарэння паставіць знак пытання:

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

Прагнасць можна абмяжоўваць усім аператарам паўтарэння: і *, і ?, і {} - вось так: *?, ?? і {}?.

Дадзены радок:

let str = 'aba accca azzza wwwwa';

Напішыце рэгулярку, якая знойдзе ўсе радкі па краях якіх стаяць літары 'a', і замяніць кожную з іх на '!'. Паміж літарамі 'a' можа быць любы сімвал (акрамя 'a').

Беларуская
AfrikaansAzərbaycanБългарскиবাংলাČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мы выкарыстоўваем cookie для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць