这个正则表达式`str.gsub(/\#{((*?)}/)`做了什么?
这个问题在这里已经有了答案:
.*
是一个贪婪的匹配,而.*?
是一个非贪婪的比赛。 看到这个链接的快速教程。 贪婪的比赛会尽可能地匹配,而非贪婪的比赛会尽可能少地匹配。
在这个例子中,贪婪的变体抓住了第一个{
和最后一个}
(最后一个右括号)之间的所有内容:
'start #{this is a match}{and so is this} end'.match(/#{(.*)}/)[1]
# => "this is a match}{and so is this"
而非贪婪变体只需要进行匹配即可,所以它只能在第一个{
和第一个连续}
之间读取。
'start #{this is a match}{and so is this} end'.match(/#{(.*?)}/)[1]
# => "this is a match"
链接地址: http://www.djcxy.com/p/76897.html