PHPのpreg_match関数で使用したときに、次の正規表現が失敗する理由を誰かが明らかにできるかどうか疑問に思います。-
<?php
$str = '\tmp\phpDC1C.tmp';
preg_match('|\\tmp\\([A-Za-z0-9]+)|', $str, $matches);
print_r($matches);
?>
これにより、パターンが有効であるように見えても、「preg_match():コンパイルに失敗しました:括弧が一致しません」というエラーメッセージが表示されます。オンラインのPHP正規表現テスターとLinuxツールのKikiを使用してテストしました。PHPは、円記号ではなく、開き括弧をエスケープしているようです。
str_replaceを使用してバックスラッシュをフォワードスラッシュに交換することで、問題を回避しました。これは私の状況では機能しますが、この正規表現が失敗する理由を知っておくと便利です。