php中preg_*函数关于”\”的一个问题

记得之前,我在php中有要写一个正则匹配:要匹配一个字符串中的的一个反斜杠’\’,开始写的是

preg_match("%.+\\%",$str);

但却报了No ending delimiter ‘%’ found in Command line code的错误。于是写成了:

preg_match("%.+\\\\%",$str);

程序正常了,当时也没多管它。昨天翻看PHP手册的时候发现preg_replace函数中有说

To use backslash in replacement, it must be doubled (“\\\\” PHP string).

想了下,这里的”\\\\”应该是在php字符串中,”\\\\”先被转义成了”\\”,然后在正则中,”\\”才又被转义成了”\”。