Ограничители регулярок в PHP

В качестве ограничителей могут выступать не только #, но и любые другие символы (только не буквы и не цифры).

К примеру, возьмем в качестве ограничителей символы амперсандов:

<?php echo preg_replace('&а+&', '!', 'строка'); ?>

Если используются скобки, тогда левый ограничитель - это открывающая скобка, а правый - закрывающая:

<?php echo preg_replace('(а+)', '!', 'строка'); ?>

Используйте в качестве ограничителей символ тильды ~.

Экранировка ограничителей

Если символ не является специальным, то, когда вы используете его в качестве ограничителя, его нужно будет экранировать в самой регулярке. Посмотрим на примере.

Пусть у нас в качестве ограничителей выступают решетки, а внутри регулярки мы ищем символ амперсанда. Так как амперсанд не является спецсимволовм, то мы его не экранируем:

<?php echo preg_replace('#a&b#', '!', 'a&b'); // выведет '!' ?>

Пусть теперь ограничители - амперсанды и внутри регулярки нам также нужен амперсанд. В таком случае амперсанд внутри приходится экранировать, иначе это вызовет ошибку PHP:

<?php echo preg_replace('&a\&b&', '!', 'a&b'); // выведет '!' ?>

Исправьте ошибку, допущенную в следующем коде:

<?php echo preg_replace('#a#b#', '!', 'a#b'); ?>