我需要将字符串的值替换为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
Jonathan Lon.. 262
与字符串插入相同.
if goo =~ /#{Regexp.quote(foo)}/ #...
glenn mcdona.. 117
需要注意的是,Regexp.quote
在乔恩L.的回答是很重要的!
if goo =~ /#{Regexp.quote(foo)}/
如果你只是做"显而易见"的版本:
if goo =~ /#{foo}/
然后匹配文本中的句点被视为正则表达式通配符,"0.0.0.0"
并将匹配"0a0b0c0"
.
另请注意,如果您真的只想检查子字符串匹配,那么您可以这样做
if goo.include?(foo)
这不需要额外的引用或担心特殊字符.
与字符串插入相同.
if goo =~ /#{Regexp.quote(foo)}/ #...
需要注意的是,Regexp.quote
在乔恩L.的回答是很重要的!
if goo =~ /#{Regexp.quote(foo)}/
如果你只是做"显而易见"的版本:
if goo =~ /#{foo}/
然后匹配文本中的句点被视为正则表达式通配符,"0.0.0.0"
并将匹配"0a0b0c0"
.
另请注意,如果您真的只想检查子字符串匹配,那么您可以这样做
if goo.include?(foo)
这不需要额外的引用或担心特殊字符.
可能Regexp.escape(foo)
是一个起点,但有一个很好的理由你不能使用更传统的表达式插值:"my stuff #{mysubstitutionvariable}"
?
此外,您可以使用!goo.match(foo).nil?
文字字符串.
Regexp.compile(Regexp.escape(foo))