⊗jsSpREGL 101 of 294 menu

ჯავასკრიპტში რეგულარული გამონათქვამების გლუვობის შეზღუდვა

რეგულარული გამონათქვამები ნაგულისხმევად არის გლუვი. ეს ნიშნავს, რომ ისინი იღებენ მაქსიმალურ შესაძლო რაოდენობის სიმბოლოს. მოდით განვიხილოთ მაგალითი. დავუშვათ, რომ ჩვენ გვაქვს ასეთი სტრიქონი:

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šuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
ვებსაიტის მუშაობის, ანალიტიკისა და პერსონალიზაციისთვის ვიყენებთ ქუქი-ფაილებს. მონაცემთა დამუშავება ხდება Კონფიდენციალურობის პოლიტიკის შესაბამისად.
ყველას მიღება პარამეტრები უარყოფა