代码:
preg_match("/(\/.*?\/)((?:[^\/]|\\\/)+?)(?:(?<!\\)\s|$)/", $line, $matches);
代码测试时间为:http://www.phpliveregex.com/p/ivO
在我当地,我得到:
preg_match():未知的修饰符&#39;)&#39;
PHP 5.6.26
答案 0 :(得分:4)
主要问题是你没能正确地逃避反斜杠。您需要四个反斜杠来匹配PHP字符串文字中的文字反斜杠。此外,如果您的模式包含这么多反斜杠,您应该考虑使用不同的正则表达式分隔符。
我建议
preg_match("~(/.*?/)((?:[^/]|\\\\/)+?)(?:(?<!\\\\)\s|$)~", $line, $matches);
作为正则表达式分隔符的波浪号将使模式更清晰,因为不再需要转义反斜杠。