Ruby中的基本匹配

时间:2013-08-13 16:23:57

标签: ruby regex

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

x = "This is a test".match(/(\w+) (\w+)/)

我们正在查看括号并能够访问单独传递的内容。

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

  

MatchData"这是" 1:"这" 2:"是">

为什么这还包括aTest

我是否必须加入.match(/(\w+) (\w+) (\w+) (\w+)/)

1 个答案:

答案 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"]]