想知道是否有人可以解释为什么在 PHP 的 preg_match 函数中使用以下正则表达式会失败:-
<?php
$str = '\tmp\phpDC1C.tmp';
preg_match('|\\tmp\\([A-Za-z0-9]+)|', $str, $matches);
print_r($matches);
?>
这会导致错误消息“preg_match(): Compilation failed: unmatched parentheses”,尽管模式似乎是有效的。我已经使用在线PHP 正则表达式测试器和 Linux 工具 Kiki 对其进行了测试。似乎 PHP 正在转义左括号而不是反斜杠。
我通过使用 str_replace 将反斜杠换成正斜杠来解决这个问题。这适用于我的情况,但很高兴知道为什么这个正则表达式会失败。