Разделители

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

Разделители, которыми пользуются чаще: слеши (/), знаки решётки (#) и тильды (~). Следующий абзац приводит примеры шаблонов с корректными разделителями.

/foo bar/
#^[^0-9]$#
+php+
%[a-zA-Z0-9_-]%

Скобки также указывают как разделители, где начальный разделитель — открывающая скобка, а конечный разделитель — закрывающая. Символы (), {}, [] и <> — допустимые пары разделителей.

(this [is] a (pattern))
{this [is] a (pattern)}
[this [is] a (pattern)]
<this [is] a (pattern)>
Разделители в виде скобок не нужно экранировать, если скобки также задали как метасимволы в шаблоне, но как и с другими разделителями скобки нужно экранировать, если их указывают непосредственно как символы.

Разделитель экранируют обратным слешем «\», если нужно указать разделитель внутри шаблона. Если разделитель часто указывают в шаблоне, в целях удобочитаемости выбирают другой разделитель для этого шаблона.

/http:\/\//
#http://#
Функцией preg_quote() пользуются, чтобы экранировать строку в шаблоне, а необязательный второй параметр функции разрешает задать разделитель.

После закрывающего разделителя указывают модификаторы шаблонов. Следующий пример показывает сопоставление без учёта регистра:

#[a-z]#i