2014-08-28 120 views
1

我有以下正则表达式应该匹配所有围绕它们的括号(包括括号)的单词,但它只匹配一个案例。我究竟做错了什么?正则表达式 - 匹配括号中的所有单词

"(e), (f), and (g)".match(/\(\w+\)/) 
=> #<MatchData "(e)"> 

输出应该是:

=> #<MatchData "(e)", 1: "(f)", 2: "(g)"> 
+1

不是Ruby编码器,而是你尝试['scan()'](http://stackoverflow.com/a/80387/1438393)而不是? – 2014-08-28 15:30:08

+0

请注意,如果有非机会可能需要使用表达式['/\([^)]+\/'](http://www.rubular.com/r/SkpBW6ghDC) \ w'字符。 – Sam 2014-08-28 15:33:00

+0

第一场比赛后红宝石'比赛'停止吗?是否需要全球标志'/ g'? – sln 2014-08-28 15:35:38

回答

6

使用scan()代替。它返回一个包含所有匹配项的数组。 match()只会返回第一个匹配项。

"(e), (f), and (g)".scan(/\(\w+\)/) 
+0

正是我在找的东西。完全忘了'scan()'。 – 2014-08-28 15:40:58

相关问题