Wyjątki wewnątrz zestawów w wyrażeniach regularnych w PHP

Wiesz już, że znaki specjalne wewnątrz [] stają się zwykłymi znakami. Istnieją jednak wyjątki: jeśli potrzebujesz nawiasów kwadratowych jako znaków, należy je poprzedzić odwrotnym ukośnikiem.

Dla przykładu w następującym kodzie wzorzec wyszukiwania wygląda tak: pomiędzy iksami znajduje się nawias kwadratowy:

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

W rezultacie do zmiennej zostanie zapisane następujące:

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

Dany jest ciąg:

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

Napisz wyrażenie regularne, które znajdzie wszystkie słowa według wzorca: litera 'x', następnie dowolna ilość dowolnych nawiasów, następnie litera 'z'.

Задание 2

Dany jest ciąg:

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

Napisz wyrażenie regularne, które znajdzie ciągi w dowolnych nawiasach i zamieni je na '!'.