真的需要在正则表达式模式中转义反斜杠吗


Is it really required to escape backslashes in regex patterns?

这可能是一个愚蠢的问题,但我很难理解为什么下面的代码能像预期的一样工作

$text = "ab    cd";
$text = preg_replace("/'s+/", "", $text);
echo $text;

并输出CCD_ 1。

's中的反斜杠不应该进行转义以在正则表达式中获得其字面意义吗?

不一定,因为字符串文字规则规定,如果'后面跟着除''之外的任何字符,则将其视为任何其他字符。这个一般规则也会影响双引号字符串,尽管在这种情况下,识别的转义序列比这两个要多。

如果你想的话,你可以转义它,但就我个人而言,我认为世界上已经有足够多的反斜杠了。