Разделители регулярных выражений PHP, / против | против {}, в чем различия? - PullRequest
6 голосов
/ 23 мая 2010

В руководстве по PHP для PCRE http://us.php.net/manual/en/pcre.examples.php, приведены 4 примера допустимых шаблонов:

  • /<\/\w+>/
  • |(\d{3})-\d+|Sm
  • /^(?i)php[34]/
  • {^\s+(\s+)?$}

Кажется, что /, | или пару фигурных скобок можно использовать в качестве разделителей, так есть ли разница между ними?

Ответы [ 2 ]

5 голосов
/ 23 мая 2010

Фактически вы можете использовать любой не буквенно-цифровой разделитель (кроме пробелов и обратной косой черты)

"%^[a-z]%"

работает так же, как

"*^[a-z]*"

, а также

"!^[a-z]!"
5 голосов
/ 23 мая 2010

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

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

preg_match("/^http:\\/\\/.+/", $str);

вы можете написать

preg_match("[^http://.+]", $str);

, чтобы избежать необходимости экранировать /.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...