Tegngjentaksoperatorer
Det oppstår situasjoner der man må spesifisere at
et tegn gjentas et gitt antall
ganger. Hvis det eksakte antallet repetisjoner er ukjent,
kan man bare skrive det flere ganger
- 'aaaa'. Men hva gjør man hvis man trenger
å si noe slikt: gjenta en eller flere
ganger?
For dette finnes det gjentaksoperatorer (kvantifisorer):
pluss + (en eller flere
ganger), stjerne * (null eller flere
ganger) og spørsmål ? (null eller en gang).
Disse operatorene virker på tegnet
som står foran dem.
La oss se på hvordan disse operatorene fungerer med eksempler.
Eksempel
La oss finne alle delstrenger etter mønsteret bokstav
'x', bokstav 'a' en eller flere
ganger, bokstav 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa+x', '!', txt)
print(res)
Resultat av kodekjøring:
'xx ! ! ! xbx'
Eksempel
La oss finne alle delstrenger etter mønsteret bokstav
'x', bokstav 'a' null eller flere
ganger, bokstav 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa*x', '!', txt)
print(res)
Resultat av kodekjøring:
'! ! ! ! xbx'
Eksempel
La oss finne alle delstrenger etter mønsteret bokstav
'x', bokstav 'a' null eller en
gang, bokstav 'x':
txt = 'xx xax xaax xbx'
res = re.sub('xa?x', '!', txt)
print(res)
Resultat av kodekjøring:
'! ! xaax xbx'
Praktiske oppgaver
Gitt en streng:
txt = 'aa aba abba abbba abca abea'
Skriv et regulært uttrykk som finner strengene
'aba', 'abba', 'abbba'
etter mønsteret: bokstav 'a', bokstav
'b' et hvilket som helst antall ganger, bokstav
'a'.
Gitt en streng:
txt = 'aa aba abba abbba abca abea'
Skriv et regulært uttrykk som finner strengene
'aa', 'aba', 'abba',
'abbba' etter mønsteret: bokstav
'a', bokstav 'b' et hvilket som helst antall ganger
(inkludert ingen ganger), bokstav
'a'.
Gitt en streng:
txt = 'aa aba abba abbba abca abea'
Skriv et regulært uttrykk som finner strengene
'aa', 'aba' etter mønsteret:
bokstav 'a', bokstav 'b' en
gang eller ingen, bokstav 'a'.
Gitt en streng:
txt = 'aa aba abba abbba abca abea'
Skriv et regulært uttrykk som finner strengene
'aa', 'aba', 'abba',
'abbba', uten å fange 'abca'
og 'abea'.