2017-07-07 129 views

回答

5

此,如果你想串

line.scan(/\d+/) #=> ["12", "20"] 

或数字数组

line.scan(/\d+/).map(&:to_i) #=> [12, 20] 

按照意见的数组另一个例子和方法:

line = "abcde:123, type/onetwothree = (12, 20)" 
line[/(?<=\()[0-9,\s]+(?=\))/].split(', ') #=> ["12", "20"] 

在这里,我们使用前视和后视仅匹配括号之间的数字。

+0

真棒!如果括号内有逗号和数字会怎么样?像line =“abcde:123,type/onetwothree =(12,20)” –

+0

@YiningTeng更新回答 –

1

只是出于好奇:

require 'json' 
JSON.parse "[#{'abcde:abc/abcd=(12, 20)'[/(?<=\().*?(?=\))/]}]" 
#⇒ [12, 20] 
+0

这确实是一个原创的解决方案。大多数人不知道'String#[]'是否支持正则表达式。 – tadman

0

这一次可能是一个很好的答案,以及:

line[/\((.*?)\)/, 1].delete(' ').split(",") 
+1

也为整数值添加'.map(&:to_i)'。 – tadman