Символът каретка вътре в множества в регулярни изрази в PHP

Както знаете, каретката вътре в [] прави отрицание, когато е написана в началото на скобите. Следователно, тя е специален символ вътре в тези скоби. За да получите каретката като символ, трябва или да я екранирате, или да я преместите от първото място.

Пример

В следващия пример шаблонът за търсене е: първият символ е всичко освен 'd', следвани от две букви 'x'.

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

В резултат в променливата ще бъде записано следното:

php'! ! ! dxx'

Пример

А сега шаблонът за търсене е: първият символ е 'd' или '^', следвани от две букви 'x':

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

В резултат в променливата ще бъде записано следното:

php'axx bxx ! !'

Пример

Можете да не премествате каретката от първото място, а просто да я екранирате с помощта на обратна наклонена черта, и тя ще означава самата себе си:

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

В резултат в променливата ще бъде записано следното:

php'axx bxx ! !'

Практически задачи

Задание 1

Даден е низ:

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

Напишете регулярен израз, който ще намери низовете по шаблон: каретка или знак @, а след това две латински букви.

Задание 2

Даден е низ:

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

Напишете регулярен израз, който ще намери низовете по шаблон: НЕ каретка и не знак @, а след това две латински букви.

Задание 3

Даден е низ:

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

Напишете регулярен израз, който ще намери низовете по шаблон: НЕ каретка, а след това две латински букви.