Robert Klemme
8/16/2006 9:13:00 AM
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