From: Robert Klemme Date: 2008-05-04T19:15:03+09:00 Subject: Re: Backreferences in case statements On 03.05.2008 18:00, loveajax@gmail.com wrote: > I am not sure if this is possible. I have a case statement which > checks for a regular expression. For example: > > case text > when /(abc)(.)*/ > when /(xyz)(.)*/ > end > > In the above snippet how can I use the instance variables pre_match > and post_match? I tried calling these methods without any qualifiers > but I got a NoMethodError. Where does Ruby store the MatchData if the > matching is done in a case statement? $ irb irb(main):001:0> /b/ =~ "abc" => 1 irb(main):002:0> $` => "a" irb(main):003:0> $' => "c" irb(main):004:0> $~ => # irb(main):005:0> $~.to_a => ["b"] irb(main):006:0> $~.pre_match => "a" irb(main):007:0> $~.post_match => "c" irb(main):008:0> But why do you have groups in your regular expressions if you are not interested in the content? Also "(.)*" seems a bit odd because it might not yield what you expect: irb(main):008:0> /a(.)*/ =~ "abcdef" => 0 irb(main):009:0> $1 => "f" IMHO it is generally a bad idea to use grouping in the way you do it because it will capture a lot that you are not interested in. It seems you might rather want "(.*)". Kind regards robert