Rubular(Example)如何获得匹配组?

/regex(?<named> .*)/.match('some long string')

match方法(在示例中)只返回第一个匹配项。
scan方法返回不带命名捕获的数组。
获取命名捕获数组(不拆分)的最佳方法是什么?

最佳答案

我一直认为Rubular的作用是这样的:

matches = []

"foobar foobaz fooqux".scan(/foo(?<named>\w+)/) do
  matches << Regexp.last_match
end

p matches
# => [ #<MatchData "foobar" named:"bar">,
#      #<MatchData "foobaz" named:"baz">,
#      #<MatchData "fooqux" named:"qux"> ]

如果我们使用enum_for$~(一个Regexp.last_match的别名),我们可以使它更红一些:
matches = "foobar foobaz fooqux".enum_for(:scan, /foo(?<named>\w+)/).map { $~ }

关于ruby - 如何在 ruby (如Rubular)中获得匹配组而不拆分字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38493113/

10-12 22:47