Ruby gsub中的命名捕获

Ruby gsub中的命名捕获,ruby,Ruby,我有以下代码,它工作正常: line.gsub!(%r{margdat= (\d+/\d+/\d+)}, 'stamp=CONVERT(date, \1,103)') 然而,出于代码风格的原因,我更喜欢使用命名捕获。目前,它对我来说太像perl了。我试过这种方法: line.gsub!(%r{margdat= (?<date>\d+/\d+/\d+)}, "stamp=CONVERT(#{date}, \1,103)") line.gsub!(%r{margdat=(?\d+/\

我有以下代码,它工作正常:

line.gsub!(%r{margdat= (\d+/\d+/\d+)}, 'stamp=CONVERT(date, \1,103)')
然而,出于代码风格的原因,我更喜欢使用命名捕获。目前,它对我来说太像perl了。我试过这种方法:

line.gsub!(%r{margdat= (?<date>\d+/\d+/\d+)}, "stamp=CONVERT(#{date}, \1,103)")
line.gsub!(%r{margdat=(?\d+/\d+/\d+),“stamp=CONVERT(#{date},\1103)”)
但它只是抱怨变量不存在。感谢您的帮助。

您需要:

'stamp=CONVERT(date, \k<date>, 103)'
'stamp=CONVERT(日期,\k,103)'

您是否尝试过
'stamp=CONVERT(date,\k,103)
?这就是您可以检索命名组值的方式,但我不理解替换字符串中对“date”的引用。Cary的回答是正确的。因为某种原因-我不能把它标记为这样。哈!因为这是一个评论。我会回答的。