Aaltosulkeet Pythonin säännöllisissä lausekkeissa

Operaattorit '+', '*', '?' ovat hyviä, mutta niillä ei voi määrittää tarkkaa toistomäärää. Tässä tapauksessa operaattori {} tulee apuun.

Se toimii seuraavasti: {5} - viisi toistoa, {2,5} – toistuu kaksi viiteen kertaa (mukaan lukien molemmat), {2,} - toistuu kaksi kertaa tai useammin. Katso esimerkkejä:

Esimerkki

Tässä esimerkissä hakumalli näyttää tältä: kirjain 'x', kirjain 'a' kerran tai kahdesti, kirjain 'x':

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

print(res)

Koodin suorituksen tulos:

python'xx ! ! xaaax'

Esimerkki

Tässä esimerkissä hakumalli näyttää tältä: kirjain 'x', kirjain 'a' kaksi kertaa tai useammin, kirjain 'x':

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

print(res)

Koodin suorituksen tulos:

python'xx xax ! !'

Esimerkki

Tässä esimerkissä hakumalli näyttää tältä: kirjain 'x', kirjain 'a' kolme kertaa, kirjain 'x':

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

print(res)

Koodin suorituksen tulos:

python'xx xax xaax !'

Esimerkki

Tässä esimerkissä hakumalli näyttää tältä: kirjain 'a' kymmenen kertaa:

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

print(res)

Koodin suorituksen tulos:

python'aaa ! aaa'

Esimerkki

Tässä esimerkissä on seuraava malli: kirjain 'x', kirjain 'a' kolme kertaa tai vähemmän, kirjain 'x'. Sen toteuttamiseksi, luvun 3 eteen ei tarvitse merkitä numeroa, vaan vain pilkun:

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

print(res)

Koodin suorituksen tulos:

python'! ! ! !'

Esimerkki

Nolla 3 edessä on myös sallittu:

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

print(res)

Koodin suorituksen tulos:

python'! ! ! !'

Käytännön tehtävät

Задание 1

Annettu merkkijono:

pythontxt = 'aa aba abba abbba abbbba abbbbba'

Kirjoita säännöllinen lauseke, joka löytää merkkijonot 'abba', 'abbba', 'abbbba' ja vain ne.

Задание 2

Annettu merkkijono:

pythontxt = 'aa aba abba abbba abbbba abbbbba'

Kirjoita säännöllinen lauseke, joka löytää muotoa 'aba' olevat merkkijonot, joissa 'b' esiintyy vähemmän kuin 3 kertaa (mukaan lukien).

Задание 3

Annettu merkkijono:

pythontxt = 'aa aba abba abbba abbbba abbbbba'

Kirjoita säännöllinen lauseke, joka löytää muotoa 'aba' olevat merkkijonot, joissa 'b' esiintyy enemmän kuin 4 kertaa (mukaan lukien).