Ruby 关于正则表达式的 $ 问题

mobiwolf · 2012年03月09日 · 最后由 ywjno 回复于 2012年03月09日 · 3316 次阅读
def test_variables_can_also_be_used_to_access_captures
    assert_equal "Gray, James", "Name:  Gray, James"[/(\w+), (\w+)/]
    assert_equal "Gray", $1
    assert_equal "James", $2
  end


问题: 上面的$1,$2是怎么回事,为什么直接取到值了?

$1 表示正则里面第一个括号匹配到的内容,$2 就是第二个括号的

这是基础问题,看完任意一本 ruby 方面的书都能找到答案的。 ps. Gray James 是大牛哇,楼主不要黑他... https://twitter.com/#!/jeg2

同意@hooopo 楼主需要系统的看一下 Ruby 的书,打打基础~,一遇到基础问题直接就发问的话,你会少了很多探究 ruby 的乐趣!

@skandhas 恩,我也找呢。ruby 挺多地方很特别,不系统看一下,只是看代码,貌似不是很好理解啊。

@hooopo 我在做他弄的那个 koans 的通过测试学习 ruby 的东西,挺有意思的。

#4 楼 @mobiwolf "双飞燕"或是“镐头书”最少得系统的看一本。 :>

@skandhas 镐头书听过,但是双飞燕不知道是何物?另外,您有 pdf 版本的吗?我想先看看,有点等不及网络订的,我之前订的是元编程。感觉不适合现阶段看。

双飞燕就是 matz 写的那本。因为封面有两只鸟~ 故得此谐名。 中文: http://product.china-pub.com/129895 英文: http://product.china-pub.com/39849

中英文都有电子 f 版~ 网上挺多 :>

1.9 下面的正则还能给 group 匹配到的内容声明变量名

需要 登录 后方可回复, 如果你还没有账号请 注册新账号