I need to substitute the value of a string into my regular expression in Ruby. Is there an easy way to do this? For example:
foo = "0.0.0.0"
goo = "here is some other stuff 0.0.0.0"
if goo =~ /foo's value goes here/
puts "success!"
end
I need to substitute the value of a string into my regular expression in Ruby. Is there an easy way to do this? For example:
foo = "0.0.0.0"
goo = "here is some other stuff 0.0.0.0"
if goo =~ /foo's value goes here/
puts "success!"
end
probably Regexp.escape(foo) would be a starting point, but is there a good reason you can't use the more conventional expression-interpolation "my stuff #{mysubstitutionvariable}"?
Also, you can just use !goo.match(foo).nil? with a literal string.
Same as string insertion.
if goo =~ /#{Regexp.quote(foo)}/
#...
foo = "0.0.0.0"
goo = "here is some other stuff 0.0.0.0"
puts "success!" if goo =~ /#{foo}/
Note that the Regexp.quote in Jon L.'s version is important!
if goo =~ /#{Regexp.quote(foo)}/
If you just do the "obvious" version:
if goo =~ /#{foo}/
then the periods in your match text are treated as regexp wildcards, and "0.0.0.0" will match "0x0y0z"...
Note also that if you really just want to check for a substring match, you can simply do
if goo.include?(foo)
which doesn't require an additional quoting or worrying about special characters...