正規表現の一致をループし、ループ内の各一致を個別に置き換えたいと思います。
例えば:
content.scan(/myregex/).each do |m|
m = 'new str'
end
どうすればそれができますか?
私がそうしたい理由は、各一致が関数からの異なる出力に置き換えられるからです。
手伝ってくれてありがとう
メソッドの次の形式は、gsub
まさにあなたが望むことを行います:
gsub(pattern) {|match| block } → new_str
ドキュメントについては、 http://ruby-doc.org/core-2.0.0/String.html#method-i-gsubを参照してください。
毎回同じものを探している場合は、次のようにすることができます。
def some_function_here(args)
.... some logic creates replacement
while something == true
content.sub(/myregex/, replacement)
.... some logic to change replacement/or a call to a helper function
end
end
新しい置換値をどのように生成しているかはわかりませんが、私が集めたものから、それを行う最も簡単な方法は、正規表現の文字列でサブメソッドを呼び出し、一度に 1 つずつ置き換えることです。