Is there some ruby equivalent of perl's /\Q...\E/?

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?

Anyway, why Ruby does not take over whole perl5 RE? Especially
look-behind assertions and \L, \l like special characters?

Thanks,

P.

On 15.08.2006 14:23, Pavel S. wrote:

/$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

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs