2010-02-05 91 views
8

對於大多數正則表達式的專家,我知道,但我想返回句子中的一些大括號之間的單詞的所有比賽一個簡單的問題;然而,Ruby只是返回一個單一的匹配,我無法弄清楚爲什麼。正則表達式的一組花括號之間的匹配所有單詞

我使用這個例句:

sentence = hello {name} is {thing} 

與此正則表達式,試圖同時返回 「(名稱)」 和 「{}事」:

sentence[/\{(.*?)\}/] 

但是,Ruby是隻返回「{name}」。任何人都可以解釋爲什麼它不符合兩個詞?

+0

因爲你只告訴它匹配一次。 (如果我其實知道紅寶石,我把它轉換成一個答案。) – 2010-02-05 22:00:39

回答

18

你接近,但使用了錯誤的方法:

sentence = "hello {name} is {thing}" 

sentence.scan(/\{(.*?)\}/) 
# => [["name"], ["thing"]] 
+0

啊,我一直在尋找的正則表達式類下,我甚至沒有看到下字符串,掃描方法。謝謝。我修改了一下到 sentence.scan(/\{.*?\/) 正如我用掃描實現的那樣,我沒有必要去做這些組,並且在比賽中包括大括號。謝謝您的幫助! – joeellis 2010-02-05 22:14:35

相關問題