⊗jsSpREGL 101 of 294 menu

A kapzsiság korlátozása reguláris kifejezésekben JavaScriptben

A reguláris kifejezések alapértelmezetten kapzsiak. Ez azt jelenti, hogy a lehető legtöbb karaktert próbálják megragadni. Nézzünk egy példát. Tegyük fel, hogy van egy ilyen karakterláncunk:

let str = 'aeeex zzz x kkk';

Tegyük fel, hogy ebben a karakterláncban meg szeretnénk találni a 'aeeex' részt a következő minta alapján: az 'a' betű, majd bármilyen karakter egy vagy több alkalommal, majd a 'x' betű.

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

Arra számítanánk, hogy az eredményül kapott változó a '! zzz x kkk' karakterlánc lesz. Azonban ez nem így van - a változóba a '! kkk' karakterlánc kerül.

Az egész azon múlik, hogy a reguláris kifejezésünk minden karaktert keres az 'a' betűtől az 'x' betűig. De a karakterláncunkban két 'x' betű van! A kapzsiság miatt a reguláris kifejezés a legutolsó x-ig keres, ezzel olyat megragadva, amire nem számítottunk.

Természetesen gyakran pontosan ez a viselkedés amire szükségünk van. De ebben a konkrét esetben szeretnénk megszüntetni a kapzsiságot, és azt mondani a reguláris kifejezésnek, hogy az első x-ig keressen.

A kapzsiság korlátozásához az ismétlési operátor után kell egy kérdőjelet tenni:

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

A kapzsiság minden ismétlési operátornál korlátozható: a *, a ? és a {} - így: *?, ?? és {}?.

Adott egy karakterlánc:

let str = 'aba accca azzza wwwwa';

Írjon egy reguláris kifejezést, amely megtalálja az összes olyan részt, amelynek szélein 'a' betűk állnak, és mindegyiket lecseréli '!'-ra. Az 'a' betűk között bármilyen karakter állhat (kivéve 'a').

Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás