⊗jsSpREGL 101 of 294 menu

Ограничување на алчноста во регуларните изрази во JavaScript

Регуларните изрази по default се алчни. Ова значи дека тие захваќаат максимално можен број на знаци. Ајде да разгледаме на пример. Нека имаме вакава низа:

let str = 'aeeex zzz x kkk';

Нека во оваа низа сакаме да ја најдеме поднизата 'aeeex' според следната шема: буква 'a', потоа било кој знак еден или повеќе пати, потоа буква 'x'.

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

Очекуваме дека во променливата како резултат ќе се запише низата '! zzz x kkk'. Сепак, тоа не е така - во променливата се добива низата '! kkk'.

Сета работа е во тоа што нашата регуларна бара до сите знаци од буквата 'a' до буквата 'x'. Но во нашата низа има две букви 'x'! Поради алчноста се добива дека регуларната бара до последното 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šuMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние користиме колачиња за работата на веб-страната, анализа и персонализација. Обработката на податоци се врши во согласност со Политиката за приватност.
прифати ги сите прилагоди одбиј