2015-10-19 65 views
0

我需要删除字符串中所有括号之间的所有内容以及逗号之前的尾部空格,如何在rails上的ruby中执行此操作?当字符串总是相同的时候,我发现如何做到这一点,但是由于括号内的值并不总是相同的,所以我找到的所有方法都失败了。如何从括号中删除括号和尾随空格之间的所有内容?

括号内的值可以是13数字,所以可能的解决方案必须考虑不同的值长度。

样品字符串:

2(2) , 12(3) , 20(2) , 21(5) 

成果,我想:

2, 12, 20, 21 

我尝试使用这个正则表达式:

/(...) 

捕获的前3场比赛,但不是最后一次一个是因为它没有尾随空间。

仅使用(...)由于某种原因导致与2(2) , 12(3) , 20(2) , 21(5匹配。

如何为此创建合适的正则表达式或可能是更好的解决方案?

回答

1

试试这个:

x = "2(2) , 12(3) , 20(2) , 21(5)" 
x.gsub(/\(.*?\)/, '') 

enter image description here

+0

第一个只删除第一匹配,但缺少'g',但添加时无法使用它。第二个删除除字符串中第一个数字之外的所有内容。 – Chrillewoodz

+0

它也没有考虑尾随空间 – Chrillewoodz

+0

@Chrillewoodz尝试新版本。它适用于我 –

1
s = "2(2) , 12(3) , 20(2) , 21(5)" 
s.gsub(/\(.*?\) ?/, '') 
=> "2, 12, 20, 21" 

这应该是工作。

0

Thisone也为我工作(s代表输入字符串):

ar = s.split(',').each.map { |el| el.strip.match(/(\d*)[^\(]/) } 
result = ar.each.map {|el| el[0]} 

这是一个有点庞大,不是很漂亮,但做这项工作:)

相关问题