PHP regex разделители, / по сравнению с | по сравнению с {}, каковы различия?

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

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

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

6
задан Alan Moore 24 May 2010 в 05:18
поделиться

2 ответа

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

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

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

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

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

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

5
ответ дан 10 December 2019 в 00:35
поделиться

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

"%^[a-z]%"

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

"*^[a-z]*"

, а также

"!^[a-z]!"
5
ответ дан 10 December 2019 в 00:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: