Justin Collins wrote:
> Joao Silva wrote:
>> When i try to use:
>>
>>  
>>>> Regexp.new("/regexp/i")
>>>>       
>> => /\/regexp\/i/
>>
>> But it's not what i want - i need:
>>
>> /regexp/i
>>
>> :-(
>>
>> How i can convert this proper way?
>>   
>
> If that is exactly the kind of string you are expecting, I think you 
> are stuck with having to use eval.
>
> irb(main):001:0> r = eval("/regexp/i")
> => /regexp/i
> irb(main):002:0> r.match("REGEXP")
> => #<MatchData "REGEXP">
>
> If you do not need the options, you could just grab the inner part and 
> make a regexp out of that:
>
> irb(main):001:0> re = "/som.r.g.x\d+/i"
> => "/som.r.g.xd+/i"
> irb(main):002:0> re = "/som.r.g.x\\d+/i".match(/\/(.*)\/[^\/]/)[1]
> => "som.r.g.x\\d+"
> irb(main):003:0> /#{re}/.match("someregex1123")
> => #<MatchData "someregex1123">
>
> Not really a great solution, though, as you lose information.
>
> -Justin
>

I should add, for the second approach you could also parse the options 
and then manually build up the regexp with the corresponding options. 
That is the "non-lazy" way, though :)

-Justin