Operátory opakování znaků v regulárních výrazech
Existují situace, kdy chceme určit,
že se znak opakuje daný počet
krát. Pokud známe přesný počet opakování,
můžeme jej jednoduše napsat několikrát
- /aaaa/. Ale co dělat, když chceme
říci toto: opakovat jednou nebo vícekrát?
K tomu existují operátory (kvantifikátory)
opakování: plus + (jednou nebo vícekrát),
hvězdička * (nula nebo vícekrát) a
otazník ? (nula nebo jednou). Tyto
operátory působí na znak, který
je před nimi.
Podívejme se na práci těchto operátorů na příkladech.
Příklad
Najděme všechny podřetězce podle vzoru písmeno
'x', písmeno 'a' jednou nebo více
krát, písmeno 'x':
let str = 'xx xax xaax xaaax xbx';
let res = str.replace(/xa+x/g, '!');
Výsledkem bude do proměnné zapsáno následující:
'xx ! ! ! xbx'
Příklad
Najděme všechny podřetězce podle vzoru písmeno
'x', písmeno 'a' nula nebo více
krát, písmeno 'x':
let str = 'xx xax xaax xaaax xbx'
let res = str.replace(/xa*x/g, '!');
Výsledkem bude do proměnné zapsáno následující:
'! ! ! ! xbx'
Příklad
Najděme všechny podřetězce podle vzoru písmeno
'x', písmeno 'a' nula nebo jednou,
písmeno 'x':
let str = 'xx xax xaax xbx';
let res = str.replace(/xa?x/g, '!');
Výsledkem bude do proměnné zapsáno následující:
'! ! xaax xbx'
Praktické úlohy
Je dán řetězec:
let str = 'aa aba abba abbba abca abea';
Napište regulární výraz, který najde řetězce
'aba', 'abba', 'abbba'
podle vzoru: písmeno 'a', písmeno 'b'
libovolný počet krát, písmeno 'a'.
Je dán řetězec:
let str = 'aa aba abba abbba abca abea';
Napište regulární výraz, který najde řetězce
'aa', 'aba', 'abba',
'abbba' podle vzoru: písmeno 'a',
písmeno 'b' libovolný počet krát (včetně
nula krát), písmeno 'a'.
Je dán řetězec:
let str = 'aa aba abba abbba abca abea';
Napište regulární výraz, který najde řetězce
'aa', 'aba' podle vzoru: písmeno
'a', písmeno 'b' jednou nebo
nikdy, písmeno 'a'.
Je dán řetězec:
let str = 'aa aba abba abbba abca abea';
Napište regulární výraz, který najde řetězce
'aa', 'aba', 'abba',
'abbba', bez zachycení 'abca'
a 'abea'.