正規表現を Ruby から PHP に変換しようとしていますが、うまくいきませんでした。
これはルビの正規表現です:
QUOTED_LITERAL = /"[^"\\]*(?:\\.[^"\\]*)*"/
UNQUOTED_LITERAL = /[^\s=,][^\s=,\\]*(?:\\.[^\s=,\\]*|=[^,>])*/
LITERAL = /(#{QUOTED_LITERAL}|#{UNQUOTED_LITERAL})/
PAIR = /#{LITERAL}\s*=>\s*#{LITERAL}/
そして、これはPHPでの私の行き方です:
const PAIR = '/("[^"\\]*(?:\\.[^"\\]*)*"|[^\s=,][^\s=,\\]*(?:\\.[^\s=,\\]*|=[^,>])*)\s*=>\s*("[^"\\]*(?:\\.[^"\\]*)*"|[^\s=,][^\s=,\\]*(?:\\.[^\s=,\\]*|=[^,>])*)/';
しかし、私が走るとき
$result = preg_match_all(self::PAIR, $input, $matches);
エラーが発生します:
preg_match_all(): Compilation failed: unmatched parentheses at offset 62
ただし、http://www.phpliveregex.com/をテスト データとともに実行すると、次のようになります。
"foo" => "bar", "foo" => bar, foo => "bar"
それはうまくいくようです。
何が起こっているのかわからない。