Krokainās iekavas Python regulārajās izteiksmēs

Operatori '+', '*', '?' ir labi, tomēr ar to palīdzību nevar norādīt konkrētu atkārtojumu skaitu. Šajā gadījumā jums palīdzēs operators {}.

Tas darbojas šādi: {5} - pieci atkārtojumi, {2,5} – atkārtojas no diviem līdz pieciem (abi ieskaitot), {2,} - atkārtojas divas vai vairāk reizes. Apskatiet piemērus:

Piemērs

Šajā piemērā meklēšanas šablons izskatās šādi: burts 'x', burts 'a' vienu vai divas reizes, burts 'x':

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

print(res)

Koda izpildes rezultāts:

python'xx ! ! xaaax'

Piemērs

Šajā piemērā meklēšanas šablons izskatās šādi: burts 'x', burts 'a' divas reizes vai vairāk, burts 'x':

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

print(res)

Koda izpildes rezultāts:

python'xx xax ! !'

Piemērs

Šajā piemērā meklēšanas šablons izskatās šādi: burts 'x', burts 'a' trīs reizes, burts 'x':

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

print(res)

Koda izpildes rezultāts:

python'xx xax xaax !'

Piemērs

Šajā piemērā meklēšanas šablons izskatās šādi: burts 'a' desmit reizes:

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

print(res)

Koda izpildes rezultāts:

python'aaa ! aaa'

Piemērs

Šajā piemērā ir šāds šablons: burts 'x', burts 'a' trīs reizes reizes vai mazāk, burts 'x'. Lai to realizētu, pirms cipara 3 var norādīt tikai komatu:

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

print(res)

Koda izpildes rezultāts:

python'! ! ! !'

Piemērs

Nulle pirms 3 ir arī pieļaujama:

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

print(res)

Koda izpildes rezultāts:

python'! ! ! !'

Praktiskie uzdevumi

Задание 1

Dota virkne:

pythontxt = 'aa aba abba abbba abbbba abbbbba'

Uzrakstiet regulāro izteiksmi, kas atradīs virknes 'abba', 'abbba', 'abbbba' un tikai tās.

Задание 2

Dota virkne:

pythontxt = 'aa aba abba abbba abbbba abbbbba'

Uzrakstiet regulāro izteiksmi, kas atradīs virknes veida 'aba', kurās 'b' sastopams mazāk nekā 3 reizes (ieskaitot).

Задание 3

Dota virkne:

pythontxt = 'aa aba abba abbba abbbba abbbbba'

Uzrakstiet regulāro izteiksmi, kas atradīs virknes veida 'aba', kurās 'b' sastopams vairāk nekā 4 reizes (ieskaitot).