Rakstzīmju atkārtošanās operatori
Ir situācijas, kad mēs vēlamies norādīt,
ka rakstzīme atkārtojas noteiktu skaitu
reizu. Ja mēs zinām precīzu atkārtojumu skaitu,
tad varam vienkārši to uzrakstīt vairākas reizes
- /aaaa/. Bet ko darīt, ja mēs vēlamies
pateikt šādi: atkārtot vienu vai vairāk
reizi?
Šim nolūkam pastāv atkārtošanās operatori
(kvantifikatori): plus + (viens vai vairāk reizi),
zvaigznīte * (nulle vai vairāk reizi) un
jautājums ? (nulle vai viena reize). Šie
operatori iedarbojas uz to rakstzīmi, kas
atrodas tieši pirms tiem.
Apskatīsim šo operatoru darbību ar piemēriem.
Piemērs
Atradīsim visas apakšvirknes pēc šablona burts
'x', burts 'a' viens vai vairāk
reizi, burts 'x':
let str = 'xx xax xaax xaaax xbx';
let res = str.replace(/xa+x/g, '!');
Rezultātā mainīgajā ierakstīsies sekojošais:
'xx ! ! ! xbx'
Piemērs
Atradīsim visas apakšvirknes pēc šablona burts
'x', burts 'a' nulle vai vairāk
reizi, burts 'x':
let str = 'xx xax xaax xaaax xbx'
let res = str.replace(/xa*x/g, '!');
Rezultātā mainīgajā ierakstīsies sekojošais:
'! ! ! ! xbx'
Piemērs
Atradīsim visas apakšvirknes pēc šablona burts
'x', burts 'a' nulle vai viens
reizi, burts 'x':
let str = 'xx xax xaax xbx';
let res = str.replace(/xa?x/g, '!');
Rezultātā mainīgajā ierakstīsies sekojošais:
'! ! xaax xbx'
Praktiskie uzdevumi
Dota virkne:
let str = 'aa aba abba abbba abca abea';
Uzrakstiet regulāro izteiksmi, kas atradīs virknes
'aba', 'abba', 'abbba'
pēc šablona: burts 'a', burts 'b'
jebkurš skaits reizi, burts 'a'.
Dota virkne:
let str = 'aa aba abba abbba abca abea';
Uzrakstiet regulāro izteiksmi, kas atradīs virknes
'aa', 'aba', 'abba',
'abbba' pēc šablona: burts 'a',
burts 'b' jebkurš skaits reizi (ieskaitot
nevienu reizi), burts 'a'.
Dota virkne:
let str = 'aa aba abba abbba abca abea';
Uzrakstiet regulāro izteiksmi, kas atradīs virknes
'aa', 'aba' pēc šablona: burts
'a', burts 'b' vienu reizi vai
nevienu, burts 'a'.
Dota virkne:
let str = 'aa aba abba abbba abca abea';
Uzrakstiet regulāro izteiksmi, kas atradīs virknes
'aa', 'aba', 'abba',
'abbba', neaptverot 'abca'
un 'abea'.