From: Robert Klemme Date: 2006-08-16T18:15:09+09:00 Subject: Re: Is there some ruby equivalent of perl's /\Q...\E/? On 15.08.2006 14:23, Pavel Smerk wrote: > Hello, > > in Perl I have \Q and \E in regexps allowing me to "literally" insert > variable containing special characters: > > $ perl -e '$a=".*"; print "a"=~/$a/ || 0, "a"=~/\Q$a\E/ || 0, "\n"' > 10 > $ > > i.e., for nonperlists, if I have '.*' string in the variable $a, then > /$a/ is the same as /.*/ (and as such matches 'a'), but /\Q$a\E/ equals > /\.\*/ (and thus does not match 'a'), because all special characters are > treated as preceded by backslash. > > Is there something like that in Ruby? Not as elegant but possible: 11:10:15 [~]: irb irb(main):001:0> Regexp.quote "." => "\\." irb(main):002:0> Regexp.escape "." => "\\." irb(main):003:0> /o#{Regexp.quote '\\'}b/ =~ "foo\\bar" => 2 Note, you may want to use /o modifier for improved efficiency. > Anyway, why Ruby does not take over whole perl5 RE? Especially > look-behind assertions and \L, \l like special characters? 1.9 or 2.0 will have a new RX engine AFAIK. robert