Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 带反斜杠的preg_match()无法按预期工作/引发错误_Php_Regex_String_Preg Match - Fatal编程技术网

Php 带反斜杠的preg_match()无法按预期工作/引发错误

Php 带反斜杠的preg_match()无法按预期工作/引发错误,php,regex,string,preg-match,Php,Regex,String,Preg Match,我需要在PHP中预先匹配一个模式,无论我做什么,我都会得到错误 我在网上到处找,找不到任何能说明我到底做错了什么的东西 以下是我的赛前模式: 它总是返回一个数组,我做错了什么?如何使正则表达式正常工作?我知道这听起来很疯狂,但您需要使用4个反斜杠才能为正则表达式获得1个反斜杠。因此,您的代码如下所示: preg_match('/\\\\MyApp\\\\Library\\\\Task\\\\/', '\MyApp\Library\Task\Db\Generate'); 为什么需要使用4?因为在

我需要在PHP中预先匹配一个模式,无论我做什么,我都会得到错误

我在网上到处找,找不到任何能说明我到底做错了什么的东西

以下是我的赛前模式:


它总是返回一个数组,我做错了什么?如何使正则表达式正常工作?

我知道这听起来很疯狂,但您需要使用4个反斜杠才能为正则表达式获得1个反斜杠。因此,您的代码如下所示:

preg_match('/\\\\MyApp\\\\Library\\\\Task\\\\/', '\MyApp\Library\Task\Db\Generate');
为什么需要使用4?因为在PHP中,使用反斜杠转义以下字符,所以转义后得到一个文字反斜杠\\


但是,由于我们是在正则表达式中,如果你想在正则表达式中使用反斜杠,你需要对反斜杠进行转义,这意味着你必须使用\\两个反斜杠,在PHP中,它们最终变成一个字符,然后在正则表达式中变成一个反斜杠。

我知道这听起来很疯狂,但是您需要使用4个反斜杠才能为正则表达式获得1个反斜杠。因此,您的代码如下所示:

preg_match('/\\\\MyApp\\\\Library\\\\Task\\\\/', '\MyApp\Library\Task\Db\Generate');
为什么需要使用4?因为在PHP中,使用反斜杠转义以下字符,所以转义后得到一个文字反斜杠\\


但是,由于我们是在正则表达式中,如果您想在正则表达式中使用反斜杠,则需要对反斜杠进行转义,这意味着您必须使用\\两个反斜杠,这两个反斜杠在PHP中以一个字符结尾,以转义另外两个反斜杠,这两个反斜杠总是以一个字符结尾,然后在正则表达式中变成一个反斜杠。

您不应该在正则表达式中避开反斜杠吗?这里已经提到了这个问题:您不应该避开正则表达式中的反斜杠吗?这里提到了这个问题: