Merkkejä toistavat operaattorit
On tilanteita, joissa on tarpeen määrittää, että
merkki toistuu tietyn määrän kertoja.
Jos tarkka toistomäärä on tuntematon,
voi sen kirjoittaa useita kertoja
- 'aaaa'. Mutta mitä tehdä, jos on tarve
sanoa seuraavaa: toista yksi tai useampi
kerta?
Tätä varten on olemassa toisto-operaattorit
(kvantifioijat): plus + (yksi tai useampi
kerta), tähti * (nolla tai useampi
kerta) ja kysymys ? (nolla tai yksi kerta).
Nämä operaattorit vaikuttat siihen merkkiin,
joka on niiden edessä.
Katsotaanpa näiden operaattoreiden toimintaa esimerkkien avulla.
Esimerkki
Etsitään kaikki alimerkkijonot mallin kirjain
'x', kirjain 'a' yksi tai useampi
kerta, kirjain 'x' mukaisesti:
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa+x', '!', txt)
print(res)
Koodin suorituksen tulos:
'xx ! ! ! xbx'
Esimerkki
Etsitään kaikki alimerkkijonot mallin kirjain
'x', kirjain 'a' nolla tai useampi
kerta, kirjain 'x' mukaisesti:
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa*x', '!', txt)
print(res)
Koodin suorituksen tulos:
'! ! ! ! xbx'
Esimerkki
Etsitään kaikki alimerkkijonot mallin kirjain
'x', kirjain 'a' nolla tai yksi
kerta, kirjain 'x' mukaisesti:
txt = 'xx xax xaax xbx'
res = re.sub('xa?x', '!', txt)
print(res)
Koodin suorituksen tulos:
'! ! xaax xbx'
Käytännön tehtävät
Annettu merkkijono:
txt = 'aa aba abba abbba abca abea'
Kirjoita säännöllinen lauseke, joka löytää merkkijonot
'aba', 'abba', 'abbba'
mallin mukaisesti: kirjain 'a', kirjain
'b' mielivaltainen määrä kertoja, kirjain
'a'.
Annettu merkkijono:
txt = 'aa aba abba abbba abca abea'
Kirjoita säännöllinen lauseke, joka löytää merkkijonot
'aa', 'aba', 'abba',
'abbba' mallin mukaisesti: kirjain
'a', kirjain 'b' mielivaltainen määrä
kertoja (mukaan lukien nolla kertaa), kirjain
'a'.
Annettu merkkijono:
txt = 'aa aba abba abbba abca abea'
Kirjoita säännöllinen lauseke, joka löytää merkkijonot
'aa', 'aba' mallin mukaisesti:
kirjain 'a', kirjain 'b' yksi
kerta tai ei lainkaan, kirjain 'a'.
Annettu merkkijono:
txt = 'aa aba abba abbba abca abea'
Kirjoita säännöllinen lauseke, joka löytää merkkijonot
'aa', 'aba', 'abba',
'abbba', olematta sieppaamatta 'abca'
ja 'abea'.