Issue #9693 has been updated by Yui NARUSE. Backport changed from 2.0.0: UNKNOWN, 2.1: UNKNOWN to 2.0.0: DONTNEED, 2.1: DONTNEED なぜ OnigSyntaxRuby に ONIG_SYN_OP_ESC_X_BRACE_HEX8 が含まれているのか謎ですが、 挙動・仕様としてはそのままでいいんじゃないでしょうか。 "\x{a}" も許されてないし。 また、これを外したからといって最適化で消えるようになる気もあんまりしないので、気分の問題ですかねぇ。 消してもいいとは思うのでコミットしたい場合はしてくださいですが、した場合はupstreamへの反映をよろしくお願いします。 https://github.com/k-takata/Onigmo/tree/tmp/ruby-2.0.x ---------------------------------------- Bug #9693: \x{} in regexp https://bugs.ruby-lang.org/issues/9693#change-46098 * Author: Kazuhiro NISHIYAMA * Status: Open * Priority: Normal * Assignee: * Category: regexp * Target version: * ruby -v: ruby 2.2.0dev (2014-02-23 trunk 45151) [x86_64-linux] * Backport: 2.0.0: DONTNEED, 2.1: DONTNEED ---------------------------------------- https://github.com/rurema/doctree/issues/80 の話です。 `regparse.c` の `OnigSyntaxRuby` では `ONIG_SYN_OP_ESC_X_BRACE_HEX8` が有効になっていて、使えることを意図しているように見えるのですが、正規表現リテラルだと parser が通してくれなくて `syntax error, unexpected '{', expecting end-of-input` になるようです。 `Regexp.new` に直接渡しても `re.c` の中で `invalid hex escape` になるので使えないようです。 -- https://bugs.ruby-lang.org/