Merkkien toistoominaisuudet
On tilanteita, joissa haluamme määrittää,
että merkki toistuu tietyn määrän kertoja.
Jos tiedämme tarkan toistomäärän,
voimme yksinkertaisesti kirjoittaa sen useita kertoja
- /aaaa/. Mutta mitä tehdä, jos haluamme
sanoa näin: toista yksi tai useampi kerta?
Tätä varten on olemassa toistoominaisuudet (kvantifioijat):
plus + (yksi tai useampi kerta),
tähti * (nolla tai useampi kerta) ja
kysymys ? (nolla tai yksi kerta). Nämä
ominaisuudet vaikuttavat siihen merkkiin, joka
edeltää niitä.
Katsotaan näiden operaattoreiden toimintaa esimerkkien avulla.
Esimerkki
Etsitään kaikki alimerkkijonot mallin kirjain
'x', kirjain 'a' yksi tai useampi
kerta, kirjain 'x' mukaisesti:
let str = 'xx xax xaax xaaax xbx';
let res = str.replace(/xa+x/g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
'xx ! ! ! xbx'
Esimerkki
Etsitään kaikki alimerkkijonot mallin kirjain
'x', kirjain 'a' nolla tai useampi
kerta, kirjain 'x' mukaisesti:
let str = 'xx xax xaax xaaax xbx'
let res = str.replace(/xa*x/g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
'! ! ! ! xbx'
Esimerkki
Etsitään kaikki alimerkkijonot mallin kirjain
'x', kirjain 'a' nolla tai yksi
kerta, kirjain 'x' mukaisesti:
let str = 'xx xax xaax xbx';
let res = str.replace(/xa?x/g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
'! ! xaax xbx'
Käytännön tehtävät
Annettu merkkijono:
let str = 'aa aba abba abbba abca abea';
Kirjoita säännöllinen lauseke, joka löytää merkkijonot
'aba', 'abba', 'abbba'
mallin mukaisesti: kirjain 'a', kirjain 'b'
mitä tahansa määrän kertoja, kirjain 'a'.
Annettu merkkijono:
let str = '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' mitä tahansa määrän kertoja (mukaan
lukien nolla kertaa), kirjain 'a'.
Annettu merkkijono:
let str = '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 kertaakaan, kirjain 'a'.
Annettu merkkijono:
let str = 'aa aba abba abbba abca abea';
Kirjoita säännöllinen lauseke, joka löytää merkkijonot
'aa', 'aba', 'abba',
'abbba', ottaen mukaan 'abca'
ja 'abea'.