0

我需要使用 gsub 和正则表达式解析和替换文本。下面显示了一个简化的示例,我正在保存其中一个捕获的组 - \3 - 以用于我的替换字符串。

my_map.gsub(/(\shref=)(\")(\d+), ' href="/created_path/' + '\3' + '" ' + ' title="' + AnotherObject.find('\3')'"')

在第一次使用捕获的值时,我只是显示它来构建新路径。在第二个示例中,我使用捕获的值调用 find 。第二个例子不起作用。

我尝试了各种转义值的方法(“\3”、“\3”等),甚至构建了一个方法来测试显示值(有效)或在方法中使用值(无效)。

任何建议表示赞赏。

4

1 回答 1

1

使用块形式并用全局变量gsub替换您的\3引用:$3

my_map.gsub(/(\shref=)(\")(\d+)/) { %Q{ href="/created_path/#{$3}" title="#{AnotherObject.find($3)"} }

我还切换到%Q{}引用以避免混淆的引用混合和连接。

替换字符串形式的第二个参数gsub(即gsub您尝试使用的版本)将在调用之前 gsub进行评估和连接,并且 **before **该\3值可用,因此它将不起作用。

顺便说一句,您是否应该调用AnotherObject.find($3)返回的方法?

于 2012-01-08T01:47:00.233 回答