⊗ppPmRgGL 229 of 447 menu

რეგულარული გამონათქვამების ხარბობის შეზღუდვა PHP-ში

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

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

<?php $str = 'aeeex zzz x kkk'; ?>

დავუშვათ, ამ სტრიქონში გვინდა ვიპოვოთ ქვესტრიქონი 'aeeex' შემდეგი შაბლონით: ასო 'a', შემდეგ ნებისმიერი სიმბოლო ერთი ან მეტჯერ, შემდეგ ასო 'x'.

<?php $res = preg_replace('#a.+x#', '!', $str); ?>

ჩვენ ველით, რომ ცვლადში შედეგად ჩაიწერება სტრიქონი '! zzz x kkk'. თუმცა, ასე არ არის - ცვლადში მოხვდება სტრიქონი '! kkk'.

მთელი საქმე იმაშია, რომ ჩვენი რეგულარული გამონათქვამი ეძებს ყველა სიმბოლოს ასოდან 'a' ასომდე 'x'. მაგრამ ჩვენს სტრიქონში ორი ასო 'x'ა. ხარბობის გამო გამოდის, რომ რეგულარული გამონათქვამი ეძებს ბოლო x-მდე, რითაც იღებს არა ისეთს, როგორსაც ველით.

რა თქმა უნდა, ხშირად ასეთი ქცევა ჩვენთვის საჭიროა. მაგრამ კონკრეტულად ამ შემთხვევაში ჩვენ გვსურს გავაუქმოთ ხარბობა და ვუთხრათ რეგულარულ გამონათქვამს, რომ მოძებნოს პირველ x-მდე.

ხარბობის შესაზღუდად, საჭიროა გამეორების ოპერატორის შემდეგ დავსვათ კითხვის ნიშანი:

<?php $res = preg_replace('#a.+?x#', '!', $str); ?>

ხარბობის შეზღუდვა შესაძლებელია ყველა გამეორების ოპერატორზე, ასე: *?, ?? და {}?.

მოცემულია სტრიქონი:

<?php $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
ვებსაიტის მუშაობის, ანალიტიკისა და პერსონალიზაციისთვის ვიყენებთ ქუქი-ფაილებს. მონაცემთა დამუშავება ხდება Კონფიდენციალურობის პოლიტიკის შესაბამისად.
ყველას მიღება პარამეტრები უარყოფა