⊗jsSpREGL 101 of 294 menu

Beperking van gierigheid in gereelde uitdrukkings in JavaScript

Gereelde uitdrukkings is by verstek gierig. Dit beteken dat hulle die maksimum moontlike hoeveelheid karakters vasvang. Kom ons kyk na 'n voorbeeld. Gestel ons het die volgende string:

let str = 'aeeex zzz x kkk';

Gestel ons wil in hierdie string die substring 'aeeex' vind volgens die volgende patroon: letter 'a', dan enige karakter een of meer keer, dan letter 'x'.

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

Ons verwag dat die string '! zzz x kkk' in die veranderlike sal wees. Dit gebeur egter nie nie - die string '! kkk' word in die veranderlike gekry.

Die rede is dat ons gereelde uitdrukking alle karakters van letter 'a' tot letter 'x' soek. Maar in ons string is daar twee letters 'x'! As gevolg van gierigheid, soek die gereelde uitdrukking tot die heel laaste x, en vang sodoende nie vas wat ons verwag het nie.

Natuurlik is hierdie gedrag dikwels wat ons nodig het. Maar spesifiek in hierdie geval wil ons die gierigheid kanselleer en vir die gereelde uitdrukking sê dat dit tot by die eerste x moet soek.

Om gierigheid te beperk, moet jy 'n vraagteken plaas na die herhalingsoperator:

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

Gierigheid kan vir alle herhalingsoperatore beperk word: beide *, en ?, en {} - soos volg: *?, ?? en {}?.

Gegee die string:

let str = 'aba accca azzza wwwwa';

Skryf 'n gereelde uitdrukking wat alle strings vind waar die letters 'a' aan weerskante is, en vervang elkeen met '!'. Tussen die letters 'a' kan enige karakter wees (behalwe 'a').

Afrikaans
Azə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
Ons gebruik koekies vir die werking van die webwerf, ontleding en personalisering. Die verwerking van data geskied volgens die Privaatheidsbeleid.
aanvaar alles instel verwerp