在其他语言中,可以在RegExp中使用/.../g进行全局匹配。

但是,在Ruby中:

"hello hello".match /(hello)/

只捕获一个问候。

如何捕获所有hello

最佳答案

您可以使用扫描方法。 scan方法将为您提供所有匹配项的数组,或者,如果将其传递给块,则将每个匹配项传递给该块。

"hello1 hello2".scan(/(hello\d+)/)   # => [["hello1"], ["hello2"]]

"hello1 hello2".scan(/(hello\d+)/).each do|m|
  puts m
end

我已经写过有关此方法的文章,您可以在文章结尾附近阅读有关here的内容。

10-06 13:39
查看更多