O símbolo de acento circunflexo dentro de conjuntos em expressões regulares do PHP

Como você sabe, o acento circunflexo dentro de [] cria uma negação quando escrito no início dos colchetes. Portanto, é um metacaractere dentro desses colchetes. Para obter o acento circunflexo como um caractere literal, é necessário escapá-lo ou removê-lo da primeira posição.

Exemplo

No exemplo a seguir, o padrão de busca é: o primeiro caractere é qualquer um exceto 'd', depois duas letras 'x'.

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

Como resultado, o seguinte será armazenado na variável:

php'! ! ! dxx'

Exemplo

Agora o padrão de busca é: o primeiro caractere é 'd' ou '^', depois duas letras 'x':

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

Como resultado, o seguinte será armazenado na variável:

php'axx bxx ! !'

Exemplo

Você pode não precisar remover o acento circunflexo da primeira posição, mas simplesmente escapá-lo usando a barra invertida, e ele passará a representar a si mesmo:

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

Como resultado, o seguinte será armazenado na variável:

php'axx bxx ! !'

Problemas práticos

Задание 1

Dada a string:

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

Escreva uma expressão regular que encontre strings seguindo o padrão: acento circunflexo ou arroba, e então duas letras latinas.

Задание 2

Dada a string:

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

Escreva uma expressão regular que encontre strings seguindo o padrão: NEM acento circunflexo nem arroba, e então duas letras latinas.

Задание 3

Dada a string:

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

Escreva uma expressão regular que encontre strings seguindo o padrão: NÃO é acento circunflexo, e então duas letras latinas.