我需要将字符串的值替换为Ruby中的正则表达式。有什么简单的方法可以做到这一点吗?例如:
foo = "0.0.0.0"
goo = "here is some other stuff 0.0.0.0"
if goo =~ /value of foo here dynamically/
puts "success!"
end
发布于 2008-09-29 18:53:55
与字符串插入相同。
if goo =~ /#{Regexp.quote(foo)}/
#...
发布于 2008-09-29 20:51:47
请注意,Jon L.'s answer中的Regexp.quote
很重要!
if goo =~ /#{Regexp.quote(foo)}/
如果你只做“显而易见”的版本:
if goo =~ /#{foo}/
然后,匹配文本中的句号将被视为正则表达式通配符,并且"0.0.0.0"
将匹配"0a0b0c0"
。
另请注意,如果您真的只想检查子字符串匹配,您可以简单地这样做
if goo.include?(foo)
它不需要额外的引号,也不需要担心特殊字符。
发布于 2008-09-29 18:52:49
插值法可能是一个起点,但是有什么好的理由不能使用更传统的表达式-- Regexp.escape(foo)
:"my stuff #{mysubstitutionvariable}"
此外,您也可以只将!goo.match(foo).nil?
与文字字符串一起使用。
https://stackoverflow.com/questions/150095
复制相似问题