使用带有“\”字符的Preg_match_all

时间:2016-12-25 20:11:39

标签: php preg-match-all

我正在尝试使用preg_match_all

从字符串中获取表达式

但它不能正常我尝试这个:

$string='this is a test hello \1234';
preg_match_all('[(\\)(0-9)], $string, $output);

它只显示“hello”如果我退出$ string的“\”我可以看到“hello 1234”但是“\”它不起作用。

2 个答案:

答案 0 :(得分:2)

我想我可能有一个解决方案

$string='this is a test hello \1234';
preg_match("/hello \\\\[0-9]*/", $string, $output);
var_dump($output);

这里的东西是4个反斜杠。我不是100%肯定这个,但我认为这是因为在php中你需要转义反斜杠,所以\\产生\ 在正则表达式中你也需要两个反斜杠(请参阅praveen kumars的答案以获得良好的正则表达式解释)。所以当你使用4个反斜杠时,php会将其更改为2,这就是你的正则表达式所需要的

编辑: 原来我的想法中有一些道理。查看this文章了解更多说明

答案 1 :(得分:1)

如果你使用这样的东西:

/^(hello \\[0-9]*)$/g

这将给你整个。请参阅([版本。

<强>解释

explanation