Bug #9693

\x{} in regexp

Added by Kazuhiro NISHIYAMA 11 months ago. Updated 11 months ago.

[ruby-dev:48085]
Status:Open
Priority:Normal
Assignee:-
ruby -v:ruby 2.2.0dev (2014-02-23 trunk 45151) [x86_64-linux] Backport:2.0.0: DONTNEED, 2.1: DONTNEED

Description

https://github.com/rurema/doctree/issues/80 の話です。

regparse.cOnigSyntaxRuby では ONIG_SYN_OP_ESC_X_BRACE_HEX8 が有効になっていて、使えることを意図しているように見えるのですが、正規表現リテラルだと parser が通してくれなくて syntax error, unexpected '{', expecting end-of-input になるようです。

Regexp.new に直接渡しても re.c の中で invalid hex escape になるので使えないようです。

History

#1 Updated by Yui NARUSE 11 months ago

  • 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

Also available in: Atom PDF