Hi everyone! I'm the author of code.mu :)
I'd love to chat with my non-Russian audience. I'm looking for your feedback on the site and the translation quality. Let's chat:)
⊗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
ვებსაიტის მუშაობის, ანალიტიკისა და პერსონალიზაციისთვის ვიყენებთ ქუქი-ფაილებს. მონაცემთა დამუშავება ხდება Კონფიდენციალურობის პოლიტიკის შესაბამისად.
ყველას მიღება პარამეტრები უარყოფა