我正在阅读一本书并给出了这个例子
x = "This is a test".match(/(\w+) (\w+)/)
我们正在查看括号并能够访问单独传递的内容。
当我将上面的表达式放入我的IRB时,我得到:
MatchData"这是" 1:"这" 2:"是">
为什么这还包括a
和Test
?
我是否必须加入.match(/(\w+) (\w+) (\w+) (\w+)/)
?
答案 0 :(得分:3)
'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"]]