⊗pyPmREGL 38 of 129 menu

Begrensning av grådighet i regulære uttrykk i Python

Regulære uttrykk er som standard grådige. Dette betyr at de fanger opp maksimalt mulig antall tegn. La oss se på et eksempel. La oss si at vi har følgende streng:

txt = 'aeeex zzz x kkk'

I denne strengen ønsker vi å finne delstrengen 'aeeex' ved å bruke følgende mønster: bokstaven 'a', deretter hvilket som helst tegn en eller flere ganger, deretter bokstaven 'x':

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

Selv om vi ønsker å få strengen '! zzz x kkk', vil strengen '! kkk' bli skrevet ut. Årsaken er at vårt regulære uttrykk søker etter alle tegn fra bokstaven 'a' til bokstaven 'x'. Men i strengen vår er det to bokstaver 'x'! På grunn av grådigheten ender det med at det regulære uttrykket søker til den siste 'x'en, og fanger dermed opp noe annet enn det vi trengte.

Selvfølgelig er dette oppførselen vi ønsker oss i mange tilfeller. Men akkurat i dette tilfellet må vi deaktivere grådigheten og fortelle det regulære uttrykket at det skal søke til den første 'x'en. I dette tilfellet bør vi sette et spørsmålstegn etter repetisjonsoperatoren:

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

Grådighet kan begrenses for alle repetisjonsoperatorer: både *, ?, og {} - slik: *?, ?? og {}?.

Gitt følgende streng:

txt = 'aba accca azzza wwwwa'

Skriv et regulært uttrykk som finner alle strenger som har bokstaven 'a' i begge ender, og erstatter hver av dem med '!'. Mellom bokstavene 'a' kan det være hvilket som helst tegn (bortsett fra 'a').

Norsk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruker informasjonskapsler for nettstedets funksjonalitet, analyse og personalisering. Behandling av data foregår i henhold til Personvernerklæringen.
godta alle tilpass avvis