Как вы знаете, шляпка внутри []
делает
отрицание, будучи написанной в начале скобок.
Значит, она является спецсимволом внутри
этих скобок. Чтобы получить шляпку как символ,
нужно или заэкранировать ее, или убрать с
первого места.
Пример
В следующем примере шаблон поиска такой:
первый символ - это все кроме 'd'
,
потом две буквы 'x'
.
<?php
$str = 'axx bxx ^xx dxx';
$res = preg_replace('#[^d]xx#', '!', $str);
?>
В результате в переменную запишется следующее:
'! ! ! dxx'
Пример
А теперь шаблон поиска такой: первый символ
- это 'd'
или '^'
, потом две
буквы 'x'
:
<?php
$str = 'axx bxx ^xx dxx';
$res = preg_replace('#[d^]xx#', '!', $str);
?>
В результате в переменную запишется следующее:
'axx bxx ! !'
Пример
Можно не убирать шляпку с первого места, а просто заэкранировать ее с помощью обратного слеша, и она станет обозначать саму себя:
<?php
$str = 'axx bxx ^xx dxx';
$res = preg_replace('#[\^d]xx#', '!', $str);
?>
В результате в переменную запишется следующее:
'axx bxx ! !'
Практические задачи
Дана строка:
<?php
$str = '^xx axx ^zz bkk @ss';
?>
Напишите регулярку, которая найдет строки по шаблону: шляпка или собака, а затем две латинских буквы.
Дана строка:
<?php
$str = '^xx axx ^zz bkk @ss';
?>
Напишите регулярку, которая найдет строки по шаблону: НЕ шляпка и не собака, а затем две латинских буквы.
Дана строка:
<?php
$str = '^xx axx ^zz bkk';
?>
Напишите регулярку, которая найдет строки по шаблону: НЕ шляпка, а затем две латинских буквы.