Undantag inuti uppsättningar i reguljära uttryck i PHP

Du vet redan att specialtecken inom [] blir vanliga tecken. Det finns dock undantag: om du behöver hakparenteser som tecken måste de escapeas med omvänt snedstreck.

Som exempel, i följande kod ser sökmönstret ut så här: mellan x:en finns en hakparentes:

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

Som ett resultat kommer följande att skrivas till variabeln:

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

Givet en sträng:

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

Skriv ett reguljärt uttryck som hittar alla ord enligt mönstret: bokstaven 'x', sedan valfritt antal av valfria parenteser, sedan bokstaven 'z'.

Задание 2

Givet en sträng:

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

Skriv ett reguljärt uttryck som hittar strängar i valfria parenteser och ersätter dem med '!'.