Semnul caret în interiorul seturilor în expresiile regulate PHP

După cum știți, semnul caret în interiorul [] face negație, atunci când este scris la începutul parantezelor. Aceasta înseamnă că este un caracter special în interiorul acestor paranteze. Pentru a obține caret-ul ca simbol, trebuie fie să-l escapați, fie să-l mutați din prima poziție.

Exemplu

În următorul exemplu, modelul de căutare este: primul caracter este orice în afară de 'd', apoi două litere 'x'.

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

În rezultat, în variabilă se va scrie următorul text:

php'! ! ! dxx'

Exemplu

Iar acum modelul de căutare este: primul caracter este 'd' sau '^', apoi două litere 'x':

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

În rezultat, în variabilă se va scrie următorul text:

php'axx bxx ! !'

Exemplu

Puteți să nu mutați caret-ul din prima poziție, ci pur și simplu să-l escapați folosind backslash-ul, și el va reprezenta însuși simbolul:

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

În rezultat, în variabilă se va scrie următorul text:

php'axx bxx ! !'

Sarcini practice

Задание 1

Este dat șirul:

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

Scrieți o expresie regulată care va găsi șirurile după modelul: caret sau arond, apoi două litere latine.

Задание 2

Este dat șirul:

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

Scrieți o expresie regulată care va găsi șirurile după modelul: NU caret și nu arond, apoi două litere latine.

Задание 3

Este dat șirul:

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

Scrieți o expresie regulată care va găsi șirurile după modelul: NU caret, apoi două litere latine.