Ruby:Rube Que:正则表达式中的变量?

时间:2013-05-27 16:06:23

标签: ruby regex string-interpolation

我正在解决http://www.rubeque.com/problems/a-man-comma--a-plan-comma--a-canal--panama-excl-/solutions但我对在regexp中将#{}视为评论感到困惑。 我的代码现在看起来像这样

def longest_palindrome(txt)
  txt[/#{txt.reverse}/]
end

我尝试了txt[/"#{txt.reverse}"/]txt[#{txt.reverse}],但没有任何效果可行。我应该如何将变量引入regexp?

2 个答案:

答案 0 :(得分:1)

这不是你可以用正则表达式做的事情。

虽然您可以在构造正则表达式时使用变量插值(请参阅其他答案/注释),但这对您没有帮助。您只能使用它来反转文字字符串,而不是正则表达式匹配结果。即使你可以,你仍然不会解决“找到最长的回文”部分,至少没有可接受的运行时性能。

使用不同的方法解决问题。

答案 1 :(得分:0)

如果没有示例,很难说你希望如何发生这种情况,但我想你是在追求

txt[/#{Regexp.escape(txt.reverse)}/]

请参阅Regexp#escape方法