Ruby中的基本匹配

Ruby中的基本匹配,ruby,regex,Ruby,Regex,我正在阅读一本书,书中给出了这个例子 x = "This is a test".match(/(\w+) (\w+)/) 我们正在查看括号并能够访问单独传递的内容 当我将上述表达式放入IRB时,我得到: MatchData“这是”1:“这”2:“是”> 为什么这不包括a和Test 是否必须包含.match(/(\w+)(\w+)(\w+)(\w+)/)?该“match”方法与正则表达式不全局匹配。这只是第一场比赛的结果。您可以使用“scan”方法而不是“match”,它应该返回一个包含正则表达

我正在阅读一本书,书中给出了这个例子

x = "This is a test".match(/(\w+) (\w+)/)
我们正在查看括号并能够访问单独传递的内容

当我将上述表达式放入IRB时,我得到:

MatchData“这是”1:“这”2:“是”>

为什么这不包括
a
Test


是否必须包含
.match(/(\w+)(\w+)(\w+)(\w+)/)

该“match”方法与正则表达式不全局匹配。这只是第一场比赛的结果。您可以使用“scan”方法而不是“match”,它应该返回一个包含正则表达式所有匹配项的数组

[~]$ irb
1.8.7-p371 :001 > x = "This is a test".match(/(\w+) (\w+)/)
 => #<MatchData "This is" 1:"This" 2:"is">
1.8.7-p371 :002 > x = "This is a test".scan(/(\w+) (\w+)/)
 => [["This", "is"], ["a", "test"]]
[~]$irb
1.8.7-p371:001>x=“这是一个测试”。匹配(/(\w+)(\w+)/)
=> #
1.8.7-p371:002>x=“这是一项测试”。扫描(/(\w+)(\w+)/)
=>[[“这”、“是”]、[“一”、“测试”]]

是的,它只匹配您指定的前两个单词,如果您想要所有单词对,请使用类似于:
“这是一个测试”。扫描(/(\w+)\s+(\w+)
太棒了,我知道您在用它做什么了。很有道理,谢谢!