Εξαιρέσεις μέσα σε σύνολα σε κανονικές εκφράσεις PHP

Γνωρίζετε ήδη ότι οι ειδικοί χαρακτήρες μέσα σε [] γίνονται συνηθισμένοι χαρακτήρες. Υπάρχουν, ωστόσο, εξαιρέσεις: εάν χρειάζεστε τις αγκύλες ως χαρακτήρες, τότε πρέπει να γραφτούν με backslash.

Για παράδειγμα, στον ακόλουθο κώδικα το μοτίβο αναζήτησης είναι ως εξής: ανάμεσα στα 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]';
?>

Γράψτε μια κανονική έκφραση που θα βρει συμβολοσειρές σε οποιεσδήποτε αγκύλες και θα τις αντικαταστήσει με '!'.