2012-01-08 21 views
0

我需要使用gsub和正則表達式解析和替換文本。一個簡化的例子出現在我保存一個捕獲組的地方 - \ 3 - 用於替換字符串。無法獲取正則表達式捕獲組在Ruby on Rails方法中工作

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

在第一次使用捕獲值時,我只是顯示它來構建新路徑。在第二個例子中,我使用捕獲的值調用查找。第二個例子不起作用。我試過了各種方法轉義值(「\ 3」,「'\ 3」等),甚至建立了一種方法來測試顯示值(工作)或使用方法中的值(不起作用)。

任何意見表示讚賞。

回答

1

使用的gsub塊形式與$3全局替換您的\3引用:

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

我也切換到%Q{}爲引用,以避免混亂的報價混合和串聯。

gsub替換字符串形式(的gsub您正在嘗試使用IE的版本)的第二個參數進行評估和關聯以前gsub被調用,** **之前的\3值可用,所以它不會工作。

另外,有沒有一種方法可以調用AnotherObject.find($3)返回的值?

+0

這很好,mu。是的,我正在調用另一種方法,但爲了簡單起見,這裏沒有包含它。謝謝! – 2012-01-08 18:40:42