2017-02-08 84 views

回答

1

好的,我剛剛瞭解到這是因爲最左邊的比賽勝出,因爲有一個a匹配abb之前返回的內容。

+1

測試ruby regexp的一個很好的資源是http://rubular.com/。正如你已經注意到正則表達式返回第一個匹配,ab *匹配'a'和'abb'。另外請注意,默認情況下正則表達式也是貪婪的,所以/ a * c /會匹配'aabbcc'(在匹配大括號時很煩人,因爲有時候最終會匹配字符串中的最後一個大括號而不是實際關閉大括號的那個大括號) – Tigraine

+0

@Tigraine :爲此,你需要'/\(.*?\)/'或'/ \([^ \)] * \)/' –

+1

@Tigraine:''aabbcc「[/ a * c /]'返回'c' – maml

4

正則表達式正好返回你所問的:1 a後跟0或更多b的第一次出現。

如果你想把所有的非重疊出現次數,你可以使用scan

"aabbcc".scan(/ab*/) 
#=> ["a", "abb"] 

如果你想有一個至少1 b,你可以使用b+

"aabbcc"[/ab+/] 
#=> "abb" 
相關問題