⊗jsSpREGL 101 of 294 menu

JavaScript-də RegExp-in tamahkarlığının məhdudlaşdırılması

Regulyar ifadələr standart olaraq tamahkardır. Bu o deməkdir ki, onlar mümkün olan maksimum sayda simvolu tutur. Gəlin bir nümunə ilə baxaq. Tutaq ki, bizim belə bir sətirimiz var:

let str = 'aeeex zzz x kkk';

Tutaq ki, biz bu sətirdə aşağıdakı şablona görə 'aeeex' alt sətrini tapmaq istəyirik: hərf 'a', sonra istənilən simvol bir və ya daha çox dəfə, sonra hərf 'x'.

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

Gözləyirik ki, nəticədə dəyişənə '! zzz x kkk' sətri yazılsın. Lakin, belə olmur - dəyişənə '! kkk' sətri düşür.

Bütün məsələ ondadır ki, bizim regulyar ifadə 'a' hərfindən 'x' hərfinə qədər bütün simvolları axtarır. Lakin bizim sətirdə iki 'x' hərfi var! Tamahkarlıq səbəbindən belə olur ki, regulyar ifadə ən son 'x'-ə qədər axtarır, bununla da gözlədiyimizdən fərqli bir şeyi tutur.

Əlbəttə ki, çox vaxt bu davranış bizim üçün lazımdır. Lakin xüsusi bu halda biz tamahkarlığı ləğv etmək və regulyar ifadəyə ilk 'x'-ə qədər axtarmasını demək istərdik.

Tamahkarlığı məhdudlaşdırmaq üçün təkrar operatorundan sonra sual işarəsi qoymaq lazımdır:

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

Tamahkarlığı bütün təkrar operatorları üçün məhdudlaşdırmaq olar: həm *, həm ?, həm də {} - belə: *?, ??{}?.

Bir sətir verilib:

let str = 'aba accca azzza wwwwa';

Kənarlarında 'a' hərfləri olan bütün sətirləri tapan və onların hər birini '!' ilə əvəz edən regulyar ifadə yazın. 'a' hərfləri arasında istənilən simvol ('a' xaricində) ola bilər.

Azərbaycan
AfrikaansБългарскиবাংলাБеларускаяČ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
Biz saytin işi, analitika və fərdiləşdirmə üçün cookie istifadə edirik. Məlumatların emalı Məxfilik Siyasəti əsasında həyata keçirilir.
hamısını qəbul et konfiqurasiya et rədd et