我需要使用gsub和正则表达式解析和替换文本。下面是一个简化示例,我将保存其中一个捕获的组 - \ 3 - 用于替换字符串。
my_map.gsub(/(\shref=)(\")(\d+), ' href="/created_path/' + '\3' + '" ' + ' title="' + AnotherObject.find('\3')'"')
在第一次使用捕获的值时,我只是显示它来构建新路径。在第二个示例中,我使用捕获的值调用find。第二个例子不起作用。
我尝试了各种方法来转义值(“\ 3”,“\ 3”等)甚至构建了一个方法来测试显示值(工作)或在方法中使用值(不不行。
感谢任何建议。
答案 0 :(得分:1)
使用gsub
的阻止形式,并将\3
引用替换为$3
全局:
my_map.gsub(/(\shref=)(\")(\d+)/) { %Q{ href="/created_path/#{$3}" title="#{AnotherObject.find($3)"} }
我也切换到%Q{}
进行引用,以避免引起混淆和串联混淆。
gsub
的替换字符串形式中的第二个参数(即您尝试使用的gsub
的版本)将在 {之前进行评估和连接在** gsub
值可用之前调用{1}} **,因此它不起作用。
顺便说一下,有没有一种方法可以调用\3
返回的内容?