Krøllete parenteser i regulære uttrykk i Python
Operatorene '+', '*', '?'
er gode, men med dem kan man ikke spesifisere
et konkret antall repetisjoner. I dette tilfellet
vil operatoren {} komme til unnsetning.
Den fungerer som følger: {5}
- fem repetisjoner, {2,5} – gjentas
fra to til fem (begge inkludert), {2,}
- gjentas to eller flere ganger. Se på
eksempler:
Eksempel
I dette eksemplet ser søkemønsteret slik ut:
bokstaven 'x', bokstaven 'a'
en eller to ganger, bokstaven 'x':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{1,2}x', '!', txt)
print(res)
Resultat av kjøring av koden:
'xx ! ! xaaax'
Eksempel
I dette eksemplet ser søkemønsteret slik ut:
bokstaven 'x', bokstaven 'a'
to ganger eller mer, bokstaven 'x':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{2,}x', '!', txt)
print(res)
Resultat av kjøring av koden:
'xx xax ! !'
Eksempel
I dette eksemplet ser søkemønsteret slik ut:
bokstaven 'x', bokstaven 'a'
tre ganger, bokstaven 'x':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{3}x', '!', txt)
print(res)
Resultat av kjøring av koden:
'xx xax xaax !'
Eksempel
I dette eksemplet ser søkemønsteret slik ut:
bokstaven 'a' ti ganger:
txt = 'aaa aaaaaaaaaa aaa'
res = re.sub('a{10}', '!', txt)
print(res)
Resultat av kjøring av koden:
'aaa ! aaa'
Eksempel
I dette eksemplet er det et slikt mønster: bokstaven
'x', bokstaven 'a' tre ganger eller mindre,
bokstaven 'x'. For å
implementere det, kan man utelate tallet foran
tallet 3 og bare sette
komma:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{,3}x', '!', txt)
print(res)
Resultat av kjøring av koden:
'! ! ! !'
Eksempel
Null foran 3 er også tillatt:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{0,3}x', '!', txt)
print(res)
Resultat av kjøring av koden:
'! ! ! !'
Praktiske oppgaver
Gitt en streng:
txt = 'aa aba abba abbba abbbba abbbbba'
Skriv et regulært uttrykk som vil finne strengene
'abba', 'abbba', 'abbbba'
og bare dem.
Gitt en streng:
txt = 'aa aba abba abbba abbbba abbbbba'
Skriv et regulært uttrykk som vil finne strenger
av typen 'aba', der 'b'
forekommer mindre enn 3 ganger (inkludert).
Gitt en streng:
txt = 'aa aba abba abbba abbbba abbbbba'
Skriv et regulært uttrykk som vil finne strenger
av typen 'aba', der 'b'
forekommer mer enn 4 ganger (inkludert).