当正则表达式被@符号包围时,它是什么意思?

gMa*_*ale 3 php regex

当正则表达式被@符号包围时,它是什么意思?这是否意味着与斜线环绕不同?什么时候@x或@i到底是什么时候?现在我想一想,周围的斜线甚至意味着什么?


背景

我看到了由John Kugelman发布的StackOverflow答案,其中他展示了严肃的正则表达式技巧.

现在,我习惯于看到被斜线包围的正则表达式

/^abc/
Run Code Online (Sandbox Code Playgroud)

但是他使用了@符号包围的正则表达式:

'@
        ^%
        (.{2})          # State, 2 chars
        ([^^]{0,12}.)   # City, 13 chars, delimited by ^
        ([^^]{0,34}.)   # Name, 35 chars, delimited by ^
        ([^^]{0,28}.)   # Address, 29 chars, delimited by ^
        \?$
 @x'
Run Code Online (Sandbox Code Playgroud)

事实上,它似乎是这样的格式:

@^abc@x
Run Code Online (Sandbox Code Playgroud)

在试图谷歌这意味着什么(谷歌这是一个棘手的问题!),我也看到了格式:

@^abc@i
Run Code Online (Sandbox Code Playgroud)

很明显xi不是匹配的字符.

这一切意味着什么?

提前感谢任何和所有回复,

-gMale

Jan*_*nen 5

周围的斜杠只是正则表达式的分隔符.你可以使用任何角色(afaik)来做到这一点 - 最常用的是/,我见过的其他一些常用的是#

换句话说,@whatever@i基本上与/whatever/i(i是不区分大小写的匹配的修饰符)相同

如果你的正则表达式包含该字符,你可能想要使用除/之外的其他内容的原因.你可以避免逃避它,类似于使用''代替字符串而不是"".