Herhalingsoperatoren voor karakters in regex

Er zijn situaties waarin we willen aangeven, dat een karakter een bepaald aantal keer wordt herhaald. Als we het exacte aantal herhalingen kennen, dan kunnen we het gewoon meerdere keren schrijven - #aaaa#. Maar wat te doen als we willen zeggen: herhaal een of meer keer?

Hiervoor bestaan er (kwantificatoren) herhaling: plus + (een of meer keer), sterretje * (nul of meer keer) en vraagteken ? (nul of één keer). Deze operatoren werken in op het karakter dat ervoor staat.

Laten we de werking van deze operatoren bekijken aan de hand van voorbeelden.

Voorbeeld

Laten we alle substrings vinden volgens het patroon letter 'x', letter 'a' een of meer keer, letter 'x':

php<?php
  $str = 'xx xax xaax xaaax xbx';
  $res = preg_replace('#xa+x#', '!', $str);
?>

Als resultaat wordt het volgende in de variabele geschreven:

php'xx ! ! ! xbx'

Voorbeeld

Laten we alle substrings vinden volgens het patroon letter 'x', letter 'a' nul of meer keer, letter 'x':

php<?php
  $str = 'xx xax xaax xaaax xbx';
  $res = preg_replace('#xa*x#', '!', $str);
?>

Als resultaat wordt het volgende in de variabele geschreven:

php'! ! ! ! xbx'

Voorbeeld

Laten we alle substrings vinden volgens het patroon letter 'x', letter 'a' nul of één keer, letter 'x':

php<?php
  $str = 'xx xax xaax xbx';
  $res = preg_replace('#xa?x#', '!', $str);
?>

Als resultaat wordt het volgende in de variabele geschreven:

php'! ! xaax xbx'

Praktische opdrachten

Задание 1

Gegeven een string:

php<?php
  $str = 'aa aba abba abbba abca abea';
?>

Schrijf een regex die de strings vindt volgens het patroon: letter 'a', letter 'b' een of meer keer, letter 'a'.

Задание 2

Gegeven een string:

php<?php
  $str = 'aa aba abba abbba abca abea';
?>

Schrijf een regex die de strings vindt volgens het patroon: letter 'a', letter 'b' nul of meer keer, letter 'a'.

Задание 3

Gegeven een string:

php<?php
  $str = 'aa aba abba abbba abca abea';
?>

Schrijf een regex die de strings vindt volgens het patroon: letter 'a', letter 'b' een keer of geen, letter 'a'.

Задание 4

Gegeven een string:

php<?php
  $str = 'aa aba abba abbba abca abea';
?>

Schrijf een regex die de strings 'aa', 'aba', 'abba', 'abbba' vindt, zonder 'abca' en 'abea' te vangen.