我正在尝试匹配008/
preg_match('/008\\//i', '008/', $matches);
preg_match('/008\//i', '008/', $matches);
我的问题是为什么这两个正则表达式都能够工作。我本来以为只有第二个正则表达式能够工作,但为什么双反斜杠的那个也能够工作呢?
\\
表示“转义反斜杠”。由于 \/
没有特殊含义,因此不需要转义(尽管可以),因此它们的值相同。echo '/008\\//i'; // prints /008\//i
echo '/008\//i'; // prints /008\//i
\'
),这确保您可以创建一个字符串,例如'test\\'
,而无需转义最后一个引号。'\/'
不会被解释为任何特殊字符,所以它与 '\\/'
的效果相同。显然,这个特定的正则表达式需要对斜杠进行转义,而两个示例都做到了这一点,这就是为什么两者都能够工作(它们是相同的)。 - Mathias-S
/
作为分隔符是完全任意的。当我搜索包含斜杠的内容时,我经常会像这样做preg_match('#008/#', $string, $matches)
,这样我就可以避免转义。 - miken32