Исключения внутри наборов в регулярках в регулярках 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]';
?>

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