Разделители

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

Часто используемыми разделителями являются косые черты (/), знаки решетки (#) и тильды (~). Ниже представлены примеры шаблонов с корректными разделителями.

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

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

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

В дополнение к вышеупомянутым разделителям, также возможно использовать скобки, где открывающая и закрывающая скобки, соответственно, являются открывающим и закрывающим разделителем.

{this is a pattern}

После закрывающего разделителями можно использовать модификаторы шаблонов. Ниже следуюет пример регистро-независимого поиска:

#[a-z]#i

Коментарии

Автор:
Note that bracket style opening and closing delimiters aren't a 100% problem-free solution, as they need to be escaped when they aren't in matching pairs within the expression. That mismatch can happen when they appear inside character classes [...], as most meta-characters lose their special meaning. Consider these examples:

<?php
  preg_match
('{[{]}'''); // Warning: preg_match(): No ending matching delimiter '}'
 
preg_match('{[}]}'''); // Warning: preg_match(): Unknown modifier ']'
 
preg_match('{[}{]}'''); // Warning: preg_match(): Unknown modifier ']'
?>

Escaping them solves it:

<?php
  preg_match
('{[\{]}'''); // OK
 
preg_match('{[}]}'''); // OK
 
preg_match('{[\}\{]}'''); // OK
?>
2015-02-26 02:46:20
http://php5.kiev.ua/manual/ru/regexp.reference.delimiters.html
Автор:
preg_match('{[}]}', ''); // Warning: preg_match(): Unknown modifier ']'

preg_match('{[\}]}', ''); // OK
2015-08-26 16:07:30
http://php5.kiev.ua/manual/ru/regexp.reference.delimiters.html
Автор:
Note that angle brackets `<>` shouldn't be used as delimiters whenever you will have to invoke advanced clusters like atomic groups or lookbehinds because their including angle bracket doesn't come in pair and escaping doesn't help either.
2018-12-12 10:56:58
http://php5.kiev.ua/manual/ru/regexp.reference.delimiters.html

    Поддержать сайт на родительском проекте КГБ