From: nobu.nakada@... Date: 2003-07-23T18:03:26+09:00 Subject: [ruby-dev:20837] Re: Regexp literals なかだです。 At Wed, 23 Jul 2003 16:26:46 +0900, zunda wrote: > さて、%rを使って正規表現を書く時にバックスラッシュによるエスケープがうまく効 > いていないようです。 > > $ /usr/local/ruby-1.8/bin/ruby -ve 'p %r|(hoge\|fuga)|' > ruby 1.8.0 (2003-07-23) [i686-linux] > /(hoge\|fuga)/ これを/(hoge|fuga)/にするのは簡単なんですが、今度は/\|/相当が書 けなくなります。どちらを優先したほうがいいんでしょうねぇ。 # 正規表現のメタキャラクタをターミネータにするのは、止めたほう # がいいと思いますが。 Index: parse.y =================================================================== RCS file: /cvs/ruby/src/ruby/parse.y,v retrieving revision 1.282 diff -u -2 -p -r1.282 parse.y --- parse.y 18 Jul 2003 05:29:43 -0000 1.282 +++ parse.y 23 Jul 2003 07:52:13 -0000 @@ -2992,4 +2992,8 @@ tokadd_string(func, term, paren, nest) default: if (func & STR_FUNC_REGEXP) { + if (c == term) { + tokadd(c); + continue; + } pushback(c); if (tokadd_escape(term) < 0) -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦