В руководстве 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]!"