2010-02-05 93 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

相关问题