Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby:Rubeque:regexp中的变量?_Ruby_Regex_String Interpolation - Fatal编程技术网

Ruby:Rubeque:regexp中的变量?

Ruby:Rubeque:regexp中的变量?,ruby,regex,string-interpolation,Ruby,Regex,String Interpolation,我正在解决这个问题,但对于在regexp中将#{}视为注释,我有点困惑。 我的代码现在看起来像这样 def longest_palindrome(txt) txt[/#{txt.reverse}/] end 我尝试了txt[/“{txt.reverse}”/或txt[{txt.reverse}],但没有任何效果。我应该如何将变量牵连到regexp中?这不是使用regex可以做的事情 虽然您可以在正则表达式的构造中使用变量插值(请参阅其他答案/注释),但这对您没有帮助。您只能使用它来反转文本

我正在解决这个问题,但对于在regexp中将#{}视为注释,我有点困惑。 我的代码现在看起来像这样

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

我尝试了
txt[/“{txt.reverse}”/
txt[{txt.reverse}]
,但没有任何效果。我应该如何将变量牵连到regexp中?

这不是使用regex可以做的事情

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


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

如果没有例子,很难说你希望这种情况如何发生,但我想你是在寻找答案

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

查看方法

有指向rubeque和Asserts的链接。我不认为这是他的实际问题。他想找到字符串中最长的回文。绝对不是一种常规语言。@TimPietzcker:现代正则表达式也不完全是常规语言。@FilipBartuzi ups,很抱歉错过了链接。无论如何,你得到了你的答案:-)这些引号不属于那里,尽管这是错误的,变量插值在
/
正则表达式中工作得很好:
/{1+2}/=>/3/
@Andrew有趣,谢谢。所以OP的代码实际上是有效的Ruby(不管它是否按预期工作)?是的。还值得注意的是,插值文本中的任何内容都不会转义为常规文本(即
/{.*.}/=~'foo'
是真实的)。