⊗ppPmRgGL 229 of 447 menu

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

Regulære udtryk er som standard grådige. Dette betyder, at de fanger det maksimalt mulige antal tegn.

Lad os se på et eksempel. Antag at vi har følgende streng:

<?php $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 et hvilket som helst tegn en eller flere gange, derefter bogstavet 'x'.

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

Vi forventer, at der som resultat skrives strengen '! zzz x kkk' til variablen. Dette sker dog ikke - der kommer strengen '! kkk' i variablen.

Årsagen er, at vores regulære udtryk søger efter 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 indtil den sidste 'x', og derved fanger den ikke det, vi forventede.

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

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

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

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

Given streng:

<?php $str = 'aba accca azzza wwwwa'; ?>

Skriv et regulært udtryk, der finder alle strenge hvis kanter er bogstavet 'a', og erstatter hver af dem med '!'. Mellem bogstaverne a kan der være et hvilket som helst 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