循环扫描并逐个替换匹配项

7
我希望能够循环遍历正则表达式匹配项,并在循环中逐个替换每个匹配项。
例如:
content.scan(/myregex/).each do |m|
  m = 'new str'
end

我该怎么做呢?

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

谢谢帮助。


1
一种方法是在每个匹配后剥离字符串的前面。 - Cary Swoveland
相比其他方法(包括我下面提到的方法),这种方法会更容易,具体取决于更广泛的目标是什么。可能需要更多的背景信息才能得出“最佳”选择。 - BWStearns
2个回答

6

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方法,并逐个替换它们。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接