Изузеци унутар сетова у регуларним изразима у регуларним изразима PHP

Већ знате да специјални симболи унутар [] постају обични симболи. Међутим, постоје изузеци: ако су вам потребне квадратне заграде као симболи, онда их треба екранирати обрнутом косом цртом.

Као пример у следећем коду шаблон за претрагу изгледа овако: између икса стоји квадратна заграда:

php<?php
  $str = 'x]x xax x[x x1x';
  $res = preg_replace('#x[\[\]]x#', '!', $str);
?>

Као резултат у променљиву ће бити уписано следеће:

php'! xax ! x1x'
Задание 1

Дат је стринг:

php<?php
  $str = 'x[]z x{}z x.z x()z';
?>

Напишите регуларни израз који ће пронаћи све речи по шаблону: слово 'x', затим било која количина било којих заграда, затим слово 'z'.

Задание 2

Дат је стринг:

php<?php
  $str = '[abc] {abc} abc (abc) [abc]';
?>

Напишите регуларни израз који ће пронаћи стрингове у било којим заградама и заменити их са '!'.