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':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{1,2}x', '!', txt)
print(res)
Koodin suorituksen tulos:
'xx ! ! xaaax'
Esimerkki
Tässä esimerkissä hakumalli näyttää
tältä: kirjain 'x', kirjain 'a'
kaksi kertaa tai useammin, kirjain 'x':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{2,}x', '!', txt)
print(res)
Koodin suorituksen tulos:
'xx xax ! !'
Esimerkki
Tässä esimerkissä hakumalli näyttää
tältä: kirjain 'x', kirjain 'a'
kolme kertaa, kirjain 'x':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{3}x', '!', txt)
print(res)
Koodin suorituksen tulos:
'xx xax xaax !'
Esimerkki
Tässä esimerkissä hakumalli näyttää
tältä: kirjain 'a' kymmenen kertaa:
txt = 'aaa aaaaaaaaaa aaa'
res = re.sub('a{10}', '!', txt)
print(res)
Koodin suorituksen tulos:
'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:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{,3}x', '!', txt)
print(res)
Koodin suorituksen tulos:
'! ! ! !'
Esimerkki
Nolla 3 edessä on myös sallittu:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{0,3}x', '!', txt)
print(res)
Koodin suorituksen tulos:
'! ! ! !'
Käytännön tehtävät
Annettu merkkijono:
txt = 'aa aba abba abbba abbbba abbbbba'
Kirjoita säännöllinen lauseke, joka löytää merkkijonot
'abba', 'abbba', 'abbbba'
ja vain ne.
Annettu merkkijono:
txt = '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).
Annettu merkkijono:
txt = '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).