Issue #9693 has been updated by mame (Yusuke Endoh).

Status changed from Open to Rejected

`"\x{00000020}"` も書けないわけなので、とりあえず現行の挙動は意図的であると考えます。逆に、`/\x{00000020}/` を許すなら `"\x{00000020}"` も許さねば、ってことになるのではないでしょうか。そういう仕様変更に意見はないですが、Bug ではなかろうということで閉じます。

`ONIG_SYN_OP_ESC_X_BRACE_HEX8` は実装詳細なんで、直したかったら成瀬さんの言うとおりにするか、もしくはupstreamを直してもらってからバックポートするのが良さそうな気がします。

----------------------------------------
Bug #9693: \x{} in regexp
https://bugs.ruby-lang.org/issues/9693#change-83217

* Author: znz (Kazuhiro NISHIYAMA)
* Status: Rejected
* Priority: Normal
* Assignee: 
* 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/