Изключения внутри наборы в регулярни изрази в регулярни изрази PHP

Вече знаете, че специалните символи внутри [] стават обикновени символи. Има обаче изключения: ако имате нужда от квадратни скобки като символи, тогава те трябва да бъдат екранирани с обратна наклонена черта.

За пример в следващия код шаблонът за търсене изглежда така: между x-овете стои квадратна скоба:

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]';
?>

Напишете регулярен израз, който ще намери низовете във всякакви скоби и ще ги замени с '!'.