PCRE正则语法
在线手册:中文 英文
PHP手册

分隔符

当使用PCRE函数的时候, 模式需要由分隔符闭合包裹. 分隔符 可以使任意非字母数字, 非反斜线, 非空白字符.

经常使用的分隔符是正斜线(/), hash符号(#) 以及取反符号(~). 下面的例子都是使用合法分隔符的模式.

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

如果分隔符需要在模式内进行匹配, 它必须使用反斜线进行转义. 如果分隔符经常在 模式内出现, 一个更好的选择就是是用其他分隔符来提高可读性.

/http:\/\//
#http://#
需要将一个字符串放入模式中使用时, 可以用preg_quote()函数对其进行 转义, 它的第二个参数(可选)可以用于指定需要被转义的分隔符.

除了上面提到的分隔符, 也可以使用括号样式的分隔符, 左括号和右括号分别作为开始和结束 分隔符.

{this is a pattern}

可以在结束分隔符后面增加模式修饰符. 下面的例子是一个大小写不敏感的匹配:

#[a-z]#i


PCRE正则语法
在线手册:中文 英文
PHP手册
PHP手册 - N: 分隔符

用户评论:

adelbenzarti at yahoo dot fr (03-Mar-2012 07:09)

When you use meta-characters in the regular expression, avoid using them as delimiters. In preference, do not use the meta-characters as delimiters at all.
Besides, you must not forget to escape the delimiter if it exists in the user text. The function preg_quote permits to escape the delimiter  if it exists in the user text.
<?php
  $usertext
=preg_quote($usertext,$delimiter);
?>

Anonymous (31-Oct-2011 10:38)

other possible delimiters include @,!, <>

using symbols (such as | ) that have meaning inside a regex as delimiters is probably going to be counterproductive.