ข้อยกเว้นภายในเซตใน Regular Expressions ใน PHP

คุณรู้แล้วว่าตัวอักขระพิเศษภายใน [] จะกลายเป็นตัวอักขระธรรมดา อย่างไรก็ตาม มีข้อยกเว้น: หากคุณต้องการวงเล็บเหลี่ยม ในฐานะตัวอักขระ คุณต้องทำการ Escape ด้วย 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';
?>

เขียน Regular Expression ที่จะค้นหาคำทั้งหมด ตามแพตเทิร์น: ตัวอักษร 'x', ตามด้วยจำนวนเท่าใดก็ได้ ของวงเล็บชนิดใดก็ได้, ตามด้วยตัวอักษร 'z'

Задание 2

กำหนดสตริง:

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

เขียน Regular Expression ที่จะค้นหาสตริง ที่อยู่ภายในวงเล็บชนิดใดก็ได้และแทนที่ด้วย '!'