我希望能够循环遍历正则表达式匹配项,并在循环中逐个替换每个匹配项。
例如:
例如:
content.scan(/myregex/).each do |m|
m = 'new str'
end
我该怎么做呢?
我想这么做的原因是每个匹配项都将被替换为函数的不同输出。
谢谢帮助。
gsub
方法的一种形式,可以完全符合你的需求:gsub(pattern) {|match| block } → new_str
如果您每次都在寻找相同的内容,那么您可以这样做:
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方法,并逐个替换它们。