From: Minero Aoki Date: 2004-04-02T18:49:03+09:00 Subject: [ruby-dev:23316] Re: English alias 青木です。 In mail "[ruby-dev:23300] Re: English alias" nobu.nakada@nifty.ne.jp wrote: > なかだです。 > > $` Regexp.last_match.pre_match > > $' Regexp.last_match.post_match > > $+ Regexp.last_match[-1] > > $"もそうなんですが、一番使いたくない$`とか$'の代替手段がやたら > 長いというのがどうも。Regexp#matchを使うのでもいいのですが、 > whenではそうもいきませんし。 やっぱり when には通用しないんですが、 マッチして $` や $' を返すメソッドってどうでしょう。 String#slice(re), slice(re, nth) からの連想で考えました。 # $` を返す。マッチしなければ nil p "aaabbbccc".before(/bbb/) #=> "aaa" # $' を返す。マッチしなければ nil p "aaabbbccc".after(/bbb/) #=> "ccc" おまけ # [$` + $&, $'] を返す。マッチしなければ nil token, post = * "aaabbbccc".read(/bbb/) p token #=> "bbb" p post #=> "ccc" レクサを書くのに便利です! ------------------------------------------------------------------- 青木峰郎