⊗jsSpREGL 101 of 294 menu

Begrænsning af grådighed i regulære udtryk i JavaScript

Regulære udtryk er som standard grådige. Det betyder, at de fanger det maksimalt mulige antal tegn. Lad os se på et eksempel. Antag, at vi har følgende streng:

let str = 'aeeex zzz x kkk';

Antag, at vi i denne streng ønsker at finde delstrengen 'aeeex' ved hjælp af følgende mønster: bogstavet 'a', derefter ethvert tegn en eller flere gange, derefter bogstavet 'x'.

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

Vi forventer, at der som resultat bliver skrevet strengen '! zzz x kkk' til variablen. Men det sker ikke - i stedet får variablen strengen '! kkk'.

Årsagen er, at vores regulære udtryk søger alle tegn fra bogstavet 'a' til bogstavet 'x'. Men i vores streng er der to bogstaver 'x'! På grund af grådigheden sker det, at det regulære udtryk søger helt til den sidste 'x', og derved fanger den noget andet, end vi forventede.

Selvfølgelig er denne opførsel ofte det, vi har brug for. Men lige i dette tilfælde ville vi ønske at ophæve grådigheden og fortælle det regulære udtryk, at det skal søge til den første 'x'.

For at begrænse grådigheden skal du sætte et spørgsmålstegn efter gentagelsesoperatoren:

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

Grådighed kan begrænses for alle gentagelsesoperatorer: både *, ? og {} - sådan her: *?, ?? og {}?.

Givet strengen:

let str = 'aba accca azzza wwwwa';

Skriv et regulært udtryk, der finder alle strenge hvor kanterne er bogstaverne 'a', og erstatter hver af dem med '!'. Mellem bogstaverne 'a' kan der være ethvert tegn (undtagen 'a').

Dansk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDeutschΕλληνικά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
Vi bruger cookies til webstedets funktion, analyse og personalisering. Behandling af data foregår i henhold til Fortrolighedspolitikken.
accepter alle tilpas afvis