Ruby(1.9.3)文档似乎暗示 scan 等同于 =~ 除了
- scan 返回多个匹配项,而 =~ 仅返回第一个匹配项,并且
- scan 返回匹配数据,而 =~ 返回索引。
但是,在下面的示例中,这两种方法似乎为相同的字符串和表达式返回不同的结果。这是为什么?
1.9.3p0 :002 > str = "Perl and Python - the two languages"
=> "Perl and Python - the two languages"
1.9.3p0 :008 > exp = /P(erl|ython)/
=> /P(erl|ython)/
1.9.3p0 :009 > str =~ exp
=> 0
1.9.3p0 :010 > str.scan exp
=> [["erl"], ["ython"]]
如果第一个匹配的索引为 0,是否不应该扫描返回“Perl”和“Python”而不是“erl”和“python”?
谢谢