Klammerparenteser i reguljära uttryck i Python
Operatorerna '+', '*', '?'
är bra, men med dem kan man inte specificera
ett exakt antal upprepningar. I detta fall
kommer operatorn {} till din hjälp.
Den fungerar på följande sätt: {5}
- fem upprepningar, {2,5} – upprepas
mellan två och fem (båda inkluderade), {2,}
- upprepas två eller fler gånger. Titta på
exemplen:
Exempel
I detta exempel ser sökmönstret ut
så här: bokstaven 'x', bokstaven 'a'
en eller två gånger, bokstaven 'x':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{1,2}x', '!', txt)
print(res)
Resultat av kodkörning:
'xx ! ! xaaax'
Exempel
I detta exempel ser sökmönstret ut
så här: bokstaven 'x', bokstaven 'a'
två gånger eller fler, bokstaven 'x':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{2,}x', '!', txt)
print(res)
Resultat av kodkörning:
'xx xax ! !'
Exempel
I detta exempel ser sökmönstret ut
så här: bokstaven 'x', bokstaven 'a'
tre gånger, bokstaven 'x':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{3}x', '!', txt)
print(res)
Resultat av kodkörning:
'xx xax xaax !'
Exempel
I detta exempel ser sökmönstret ut
så här: bokstaven 'a' tio gånger:
txt = 'aaa aaaaaaaaaa aaa'
res = re.sub('a{10}', '!', txt)
print(res)
Resultat av kodkörning:
'aaa ! aaa'
Exempel
I detta exempel finns följande mönster: bokstaven
'x', bokstaven 'a' tre gånger eller färre,
bokstaven 'x'. För att
implementera det, kan man före siffran 3
utelämna talet och bara sätta
ett kommatecken:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{,3}x', '!', txt)
print(res)
Resultat av kodkörning:
'! ! ! !'
Exempel
Nolla före 3 är också tillåtet:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{0,3}x', '!', txt)
print(res)
Resultat av kodkörning:
'! ! ! !'
Praktiska uppgifter
Given en sträng:
txt = 'aa aba abba abbba abbbba abbbbba'
Skriv ett reguljärt uttryck som hittar strängarna
'abba', 'abbba', 'abbbba'
och endast dessa.
Given en sträng:
txt = 'aa aba abba abbba abbbba abbbbba'
Skriv ett reguljärt uttryck som hittar strängar
av typen 'aba', där 'b'
förekommer färre än 3 gånger (inklusive).
Given en sträng:
txt = 'aa aba abba abbba abbbba abbbbba'
Skriv ett reguljärt uttryck som hittar strängar
av typen 'aba', där 'b'
förekommer fler än 4 gånger (inklusive).