2013-06-12 81 views

回答

7

.*是貪婪的比賽,而.*?是非貪婪匹配。有關它們的快速教程,請參閱this link。貪婪的比賽會盡可能地匹配,而非貪婪的比賽會盡可能少地匹配。

在這個例子中,貪婪的變種抓住第一{和最後}(最後一個右括號)之間的一切:

'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" 
相關問題