我正在尝试学习PHP中的Regex,现在陷入了困境。我的问题可能看起来很愚蠢,但确实可以解释。
我通过一个链接:
PHP regexp模式中需要额外的反斜杠
但我只是无法理解:
他在回答中提到了两个陈述:
2个反斜杠用于在字符串("\\\\"
-> \\
)中
转义1个反斜杠用于在正则表达式引擎(\\
-> \
)中转义
我的问题:
“脱逃”一词实际上是什么意思?逃跑的目的是什么?为什么我们需要4个反斜杠才能将其包含在正则表达式中?
反斜杠在regexen和PHP中都有特殊含义。在两种情况下,它都用作转义符。例如,如果您想在PHP字符串文字中编写文字引号,则将无法使用:
$str = ''';
PHP会感到“困惑”,它'
以字符串结尾并且是字符串的一部分。那是\
进来的地方:
$str = '\'';
它转义了的特殊含义'
,因此现在不再是终止字符串文字,而是只是字符串中的普通字符。还有更多类似的转义序列\n
。
现在这意味着这\
是一个具有特殊含义的特殊字符。要在编写文字时避开此难题\
,必须将文字反斜杠转义为\\
:
$str = '\\'; // string literal representing one backslash
这在PHP和regexen中都相同。如果要在正则表达式中编写文字反斜杠,则必须编写/\\/
。现在,由于您将正则表达式编写为PHP字符串,因此需要对它们进行两次转义:
$regex = '/\\\\/';
\\
首先\
通过PHP字符串转义机制将一对减为一个,因此实际的正则表达式为/\\/
,这是一个正则表达式,表示“一个反斜杠”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句