Operatory powtarzania znaków w wyrażeniach regularnych
Zdarzają się sytuacje, gdy chcemy wskazać,
że znak powtarza się określoną liczbę
razy. Jeśli znamy dokładną liczbę powtórzeń,
możemy po prostu napisać ją kilka razy
- /aaaa/. Ale co zrobić, jeśli chcemy
powiedzieć coś takiego: powtórz jeden lub więcej
razy?
Do tego służą operatory (kwantyfikatory)
powtórzenia: plus + (jeden lub więcej razy),
gwiazdka * (zero lub więcej razy) i
znak zapytania ? (zero lub jeden raz). Te
operatory działają na znak, który
stoi przed nimi.
Przyjrzyjmy się działaniu tych operatorów na przykładach.
Przykład
Znajdźmy wszystkie podciągi według wzorca litera
'x', litera 'a' jeden lub więcej
razy, litera 'x':
let str = 'xx xax xaax xaaax xbx';
let res = str.replace(/xa+x/g, '!');
W rezultacie do zmiennej zostanie zapisane następujące:
'xx ! ! ! xbx'
Przykład
Znajdźmy wszystkie podciągi według wzorca litera
'x', litera 'a' zero lub więcej
razy, litera 'x':
let str = 'xx xax xaax xaaax xbx'
let res = str.replace(/xa*x/g, '!');
W rezultacie do zmiennej zostanie zapisane następujące:
'! ! ! ! xbx'
Przykład
Znajdźmy wszystkie podciągi według wzorca litera
'x', litera 'a' zero lub jeden
raz, litera 'x':
let str = 'xx xax xaax xbx';
let res = str.replace(/xa?x/g, '!');
W rezultacie do zmiennej zostanie zapisane następujące:
'! ! xaax xbx'
Zadania praktyczne
Dany jest ciąg:
let str = 'aa aba abba abbba abca abea';
Napisz wyrażenie regularne, które znajdzie ciągi
'aba', 'abba', 'abbba'
według wzorca: litera 'a', litera 'b'
dowolną liczbę razy, litera 'a'.
Dany jest ciąg:
let str = 'aa aba abba abbba abca abea';
Napisz wyrażenie regularne, które znajdzie ciągi
'aa', 'aba', 'abba',
'abbba' według wzorca: litera 'a',
litera 'b' dowolną liczbę razy (w
tym także zero razy), litera 'a'.
Dany jest ciąg:
let str = 'aa aba abba abbba abca abea';
Napisz wyrażenie regularne, które znajdzie ciągi
'aa', 'aba' według wzorca: litera
'a', litera 'b' jeden raz lub
zero razy, litera 'a'.
Dany jest ciąg:
let str = 'aa aba abba abbba abca abea';
Napisz wyrażenie regularne, które znajdzie ciągi
'aa', 'aba', 'abba',
'abbba', nie łapiąc 'abca'
i 'abea'.