PHP-də RegEx-lərdə dəstlər içində şapka simvolu

Bildiyiniz kimi, [] içindəki şapka simvolu, mötərizələrin əvvəlində yazıldıqda, inkar mənası verir. Bu o deməkdir ki, o, bu mötərizələr içində xüsusi simvoldur. Şapkanı simvol kimi əldə etmək üçün ya onu escape etməli, ya da birinci yerdən çıxarmalısınız.

Nümunə

Aşağıdakı nümunədə axtarış şablonu belədir: birinci simvol 'd' istisna olmaqla hər şey, sonra isə iki 'x' hərfi.

php<?php
  $str = 'axx bxx ^xx dxx';
  $res = preg_replace('#[^d]xx#', '!', $str);
?>

Nəticədə dəyişənə aşağıdakı yazılacaq:

php'! ! ! dxx'

Nümunə

İndi isə axtarış şablonu belədir: birinci simvol 'd' və ya '^', sonra isə iki 'x' hərfi:

php<?php
  $str = 'axx bxx ^xx dxx';
  $res = preg_replace('#[d^]xx#', '!', $str);
?>

Nəticədə dəyişənə aşağıdakı yazılacaq:

php'axx bxx ! !'

Nümunə

Şapkanı birinci yerdən çıxarmağa ehtiyac yoxdur, sadəcə onu backslash ilə escape edə bilərsiniz, və o, özünü ifadə edəcək:

php<?php
  $str = 'axx bxx ^xx dxx';
  $res = preg_replace('#[\^d]xx#', '!', $str);
?>

Nəticədə dəyişənə aşağıdakı yazılacaq:

php'axx bxx ! !'

Praktiki tapşırıqlar

Задание 1

Verilmiş sətir:

php<?php
  $str = '^xx axx ^zz bkk @ss';
?>

Aşağıdakı şablona uyğun gələn sətirləri tapan regular ifadəni yazın: şapka və ya işarə @, sonra isə iki latın hərfi.

Задание 2

Verilmiş sətir:

php<?php
  $str = '^xx axx ^zz bkk @ss';
?>

Aşağıdakı şablona uyğun gələn sətirləri tapan regular ifadəni yazın: şapka və ya işarə @ OLMASIN, sonra isə iki latın hərfi.

Задание 3

Verilmiş sətir:

php<?php
  $str = '^xx axx ^zz bkk';
?>

Aşağıdakı şablona uyğun gələn sətirləri tapan regular ifadəni yazın: şapka OLMASIN, sonra isə iki latın hərfi.