我想循环使用正则表达式匹配并在循环中单独替换每个匹配。
例如:
content.scan(/myregex/).each do |m|
m = 'new str'
end
我怎么能这样做?
我想这样做的原因是因为每个匹配将被替换为函数的不同输出。
感谢您的帮助
答案 0 :(得分:6)
以下形式的gsub
方法将完全符合您的要求:
gsub(pattern) {|match| block } → new_str
有关文档,请参阅http://ruby-doc.org/core-2.0.0/String.html#method-i-gsub。
答案 1 :(得分:0)
如果你每次都在寻找相同的东西,那么你可以这么做:
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
不确定你是如何生成新的替换值,但是从我收集的内容来看,最简单的方法是在你的正则表达式的字符串上调用sub方法并一次替换一个。 / p>