7

我想遍历正则表达式匹配并在循环中单独替换每个匹配。

例如:

content.scan(/myregex/).each do |m|
  m = 'new str'
end

我怎么能那样做?

我想这样做的原因是因为每个匹配项都将被函数的不同输出替换。

感谢帮助

4

2 回答 2

6

gsub方法的以下形式将完全满足您的要求:

gsub(pattern) {|match| block } → new_str

有关文档,请参阅http://ruby-doc.org/core-2.0.0/String.html#method-i-gsub

于 2013-09-20T00:53:31.200 回答
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 方法并一次替换它们。

于 2013-09-20T00:46:09.807 回答