【发布时间】:2016-09-06 04:00:03
【问题描述】:
在正则表达式中有时我会遇到正斜杠,我尝试使用一个反斜杠和两个反斜杠对其进行转义,并实现返回是相同的。所以我想更清楚地理解它。
示例代码:
var_dump(preg_match("/^\\/$/D", "/"));
var_dump(preg_match("/^\/$/D", "/"));
它们都给出相同的输出
int(1)
在我的理解中,用两个反斜杠转义似乎是正确的,因为当 PHP 解析字符串时,第一个反斜杠 (\) 转义了第二个反斜杠 (\),而在解析正则表达式时,反斜杠 (\) 然后转义正斜杠( /)。
它们之间有什么区别吗?谢谢。
【问题讨论】:
-
有区别。在第一个带有两个反斜杠的情况下,您可以转义反斜杠,使其成为文字。在第二个你转义正斜杠,使其成为文字。
-
@CharlotteDunois 我曾经认为反斜杠成为文字,但如果是这种情况,那么第一个示例
var_dump(preg_match("/^\\/$/D", "/"));不应该匹配,因为我只提供"/"作为主题。但是如果反斜杠变成文字,那么它应该匹配"\/"。如果我误解了什么,请纠正我。谢谢