2014-08-28 4 views
1

У меня есть следующее регулярное выражение, которое должно соответствовать всем словам, которые имеют круглые скобки вокруг них (включая скобки), но соответствует только одному случаю. Что я делаю не так?Regex - соответствие всех слов в скобках

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

Вывод должен быть:

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

Не рубиновый кодер, но вы попробовали ['scan()'] (http://stackoverflow.com/a/80387/1438393) вместо этого? –

+0

Обратите внимание, что вы можете использовать выражение ['/\([^)]+\)/'](http://www.rubular.com/r/SkpBW6ghDC), если есть вероятность того, \ w'. – Sam

+0

Стоит ли матч «Рубина» после первого матча? Требуется ли глобальный флаг '// g'? – sln

ответ

6

Используйте scan() вместо этого. Он возвращает массив со всеми совпадениями. match() вернет только первое совпадение.

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

Точно, что я искал. Полностью забыл о 'scan()'. –

Смежные вопросы