0

gsubと正規表現を使用してテキストを解析および置換する必要があります。簡略化した例を以下に示します。ここでは、キャプチャしたグループの1つ(\ 3-)を、置換文字列で使用するために保存しています。

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

キャプチャされた値の最初の使用では、新しいパスを構築するためにそれを表示しているだけです。2番目の例では、キャプチャされた値を使用して検索を呼び出しています。2番目の例は機能しません。

値をエスケープするさまざまな方法( "\ 3"、'' \ 3''など)を試し、値の表示(機能)またはメソッドでの値の使用(機能しない)をテストするメソッドを作成しました。 )。

アドバイスをいただければ幸いです。

4

1 に答える 1

1

のブロック形式を使用し、参照をグローバルgsubに置き換えます。\3$3

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

%Q{}また、混乱する引用の混合と連結を避けるために、引用に切り替えました。

のreplacement-string形式の2番目の引数(つまり、使用しようとしているgsubバージョン)は、呼び出されると**値が使用可能になる前**に評価および連結されるため、機能しません。gsub gsub\3

余談ですが、何AnotherObject.find($3)が返ってくるのかを呼び出す必要があるメソッドはありますか?

于 2012-01-08T01:47:00.233 に答える