⊗pyPmREGL 38 of 129 menu

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

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:

txt = 'aeeex zzz x kkk'

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

res = re.sub('a.+x', '!', txt) print(res)

Selvom vi ønsker at få strengen '! zzz x kkk', vil strengen '! kkk' blive udskrevet. Å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 resulterer det i, at det regulære udtryk søger til den aller sidste x, herved fanger den ikke det, vi havde brug for.

Selvfølgelig er denne opførsel ofte det, vi har brug for. Men lige i dette tilfælde er vi nødt til at ophæve grådigheden og fortælle det regulære udtryk, at det skal søge til den første x. I dette tilfælde skal du sætte et spørgsmålstegn efter gentagelsesoperatoren:

res = re.sub('a.+?x', '!', txt) print(res) # vil udskrive strengen '! zzz x kkk'

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

Givet strengen:

txt = 'aba accca azzza wwwwa'

Skriv et regulært udtryk, der finder alle strenge, hvor bogstavet 'a' står i begge ender, 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