【发布时间】:2012-05-10 05:18:27
【问题描述】:
想知道是否有人可以解释为什么在 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 Regular Expression tester 和 Linux 工具 Kiki 对其进行了测试。似乎 PHP 正在转义左括号而不是反斜杠。
我已经解决了这个问题,方法是使用 str_replace 将反斜杠换成正斜杠。这适用于我的情况,但很高兴知道为什么这个正则表达式会失败。
【问题讨论】:
标签: php regex preg-match