В руководстве PHP PCRE, http://us.php.net/manual/en/pcre.examples.php , он дает 4 примера допустимых шаблонов:
/<\/\w+>/
|(\d{3})-\d+|Sm
/^(?i)php[34]/
{^\s+(\s+)?$}
Кажется, что /
, |
или пару фигурных скобок можно использовать в качестве разделителей, так есть ли разница между ними?
Никакой разницы, кроме закрывающего разделителя, не может появиться без экранирования.
Это полезно, когда стандартный разделитель используется много, например, вместо
preg_match("/^http:\\/\\/.+/", $str);
ты можешь написать
preg_match("[^http://.+]", $str);
чтобы избежать необходимости избегать /
.
Фактически вы можете использовать любой алфавитно-цифровой разделитель (исключая пробелы и обратную косую черту)
"%^[az]%"
работает так же, как и
"*^[az]*"
так же как
"!^[az]!"