正则表达式中的":"求助(来自Best of Ruby Quiz中的Quiz 1: Mad Libs

正则表达式中的":"求助(来自Best of Ruby Quiz中的Quiz 1: Mad Libs



[Copy to clipboard] [ - ]
[.+?] +是匹配一个或者一个以上的字符。?是非贪婪匹配模式。这里应该可以匹配一行文字。
[:] 正则中的冒号通常没有什么含义,代表实义字符。

第三个问题要慢慢看才知道的了。
我测试了一下:

[Copy to clipboard] [ - ]
我想这个用意是测试你对sub和.+?的掌握程度

在ruby String中
sub是返回对于pattern的第一个匹配再去把这个匹配replacement
也就是说

[Copy to clipboard] [ - ]


[Copy to clipboard] [ - ]
引用:
原帖由 bryanzk 于 2007-7-16 20:59 发表

puts question.sub(/^\s*(.+?)\s*:\s*/, "")
key = if question.sub(/^\s*(.+?)\s*:\s*/, "") then $1 else nil end
puts "result1: " + key

puts question.sub(/^\s*(.+)\s*:\s*/, "")
key2 = if que ...
rubybook中的解释:
$1 to $9 String The contents of successive groups matched in the last successful pattern match. In "cat" =~/(c|a)(t|z)/, $1 will be set to ``a'' and $2 to ``t''. This variable is local to the current scope. {}

好像$1-$9是根据正则表达式中带括号的匹配表达式分组进行赋值的嘞,如果是这样的话,那就讲得通了,哈哈