Krøllede parenteser i regulære udtryk i Python
Operatorerne '+', '*', '?'
er gode, men med dem kan man ikke angive
et specifikt antal gentagelser. I dette tilfælde
kommer operatoren {} til undsætning.
Den fungerer som følger: {5}
- fem gentagelser, {2,5} – gentages
fra to til fem (begge inklusive), {2,}
- gentages to gange eller derover. Se
eksemplerne:
Eksempel
I dette eksempel ser søgemønsteret sådan
ud: bogstavet 'x', bogstavet 'a'
en eller to gange, bogstavet 'x':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{1,2}x', '!', txt)
print(res)
Resultatet af kodeudførelsen:
'xx ! ! xaaax'
Eksempel
I dette eksempel ser søgemønsteret sådan
ud: bogstavet 'x', bogstavet 'a'
to gange eller derover, bogstavet 'x':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{2,}x', '!', txt)
print(res)
Resultatet af kodeudførelsen:
'xx xax ! !'
Eksempel
I dette eksempel ser søgemønsteret sådan
ud: bogstavet 'x', bogstavet 'a'
tre gange, bogstavet 'x':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{3}x', '!', txt)
print(res)
Resultatet af kodeudførelsen:
'xx xax xaax !'
Eksempel
I dette eksempel ser søgemønsteret sådan
ud: bogstavet 'a' ti gange:
txt = 'aaa aaaaaaaaaa aaa'
res = re.sub('a{10}', '!', txt)
print(res)
Resultatet af kodeudførelsen:
'aaa ! aaa'
Eksempel
I dette eksempel er der følgende mønster: bogstavet
'x', bogstavet 'a' tre gange eller derunder,
bogstavet 'x'. For at
implementere det, kan man udelade tallet
foran cifret 3
og blot sætte et komma:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{,3}x', '!', txt)
print(res)
Resultatet af kodeudførelsen:
'! ! ! !'
Eksempel
Nul foran 3 er også tilladt:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{0,3}x', '!', txt)
print(res)
Resultatet af kodeudførelsen:
'! ! ! !'
Praktiske opgaver
Givet en streng:
txt = 'aa aba abba abbba abbbba abbbbba'
Skriv et regulært udtryk, der finder strengene
'abba', 'abbba', 'abbbba'
og kun dem.
Givet en streng:
txt = 'aa aba abba abbba abbbba abbbbba'
Skriv et regulært udtryk, der finder strengene
af typen 'aba', hvor 'b'
forekommer mindre end 3 gange (inklusiv).
Givet en streng:
txt = 'aa aba abba abbba abbbba abbbbba'
Skriv et regulært udtryk, der finder strengene
af typen 'aba', hvor 'b'
forekommer mere end 4 gange (inklusiv).