带反斜杠的preg_match()无法按预期工作/抛出错误

Vin*_*ein 1 php regex string preg-match

我需要preg_match()PHP中的模式,无论我做什么,我都会遇到错误.

我在网上看了一遍,找不到任何告诉我实际上我做错了什么的东西.

这是我的preg_match模式:

preg_match('/\MyApp\Library\Task\/', '\MyApp\Library\Task\Db\Generate');
Run Code Online (Sandbox Code Playgroud)

它总是返回一个数组,我该怎么办?我怎样才能使我的正则表达式正常工作?

Riz*_*123 9

我知道这听起来很疯狂,但你需要使用4个反斜杠为你的正则表达式获得1个反斜杠.所以你的代码看起来像这样:

preg_match('/\\\\MyApp\\\\Library\\\\Task\\\\/', '\MyApp\Library\Task\Db\Generate');
Run Code Online (Sandbox Code Playgroud)

为什么需要使用4?因为在PHP中,您使用反斜杠来转义后续字符,因此您将其转义为获得一个文字反斜杠(\\).

但是因为我们处于正则表达式中你需要在你的正则表达式中使用\\反斜杠来逃避反斜杠,这意味着你必须使用两个反斜杠,其中PHP最终会在一个中反转以逃避另外两个反斜杠总是在一个反斜杠中字符,然后最终作为正则表达式中的单个反斜杠.