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':

pythontxt = 'xx xax xaax xaaax'
res = re.sub('xa{1,2}x', '!', txt)

print(res)

Resultat av kodkörning:

python'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':

pythontxt = 'xx xax xaax xaaax'
res = re.sub('xa{2,}x', '!', txt)

print(res)

Resultat av kodkörning:

python'xx xax ! !'

Exempel

I detta exempel ser sökmönstret ut så här: bokstaven 'x', bokstaven 'a' tre gånger, bokstaven 'x':

pythontxt = 'xx xax xaax xaaax'
res = re.sub('xa{3}x', '!', txt)

print(res)

Resultat av kodkörning:

python'xx xax xaax !'

Exempel

I detta exempel ser sökmönstret ut så här: bokstaven 'a' tio gånger:

pythontxt = 'aaa aaaaaaaaaa aaa'
res = re.sub('a{10}', '!', txt)

print(res)

Resultat av kodkörning:

python'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:

pythontxt = 'xx xax xaax xaaax'
res = re.sub('xa{,3}x', '!', txt)

print(res)

Resultat av kodkörning:

python'! ! ! !'

Exempel

Nolla före 3 är också tillåtet:

pythontxt = 'xx xax xaax xaaax'
res = re.sub('xa{0,3}x', '!', txt)

print(res)

Resultat av kodkörning:

python'! ! ! !'

Praktiska uppgifter

Задание 1

Given en sträng:

pythontxt = 'aa aba abba abbba abbbba abbbbba'

Skriv ett reguljärt uttryck som hittar strängarna 'abba', 'abbba', 'abbbba' och endast dessa.

Задание 2

Given en sträng:

pythontxt = '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).

Задание 3

Given en sträng:

pythontxt = '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).