Excepciones dentro de conjuntos en expresiones regulares de PHP

Ya sabes que los caracteres especiales dentro de [] se convierten en caracteres ordinarios. Sin embargo, hay excepciones: si necesitas corchetes como caracteres, entonces debes escaparlos con una barra inversa.

Por ejemplo, en el siguiente código, el patrón de búsqueda se ve así: entre equis hay un corchete:

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

Como resultado, se guardará lo siguiente en la variable:

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

Dada la cadena:

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

Escribe una expresión regular que encuentre todas las palabras según el patrón: letra 'x', luego cualquier cantidad de cualquier tipo de corchetes, luego letra 'z'.

Задание 2

Dada la cadena:

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

Escribe una expresión regular que encuentre las cadenas entre cualquier tipo de corchetes y las reemplace por '!'.