我需要删除字符串中所有括号之间的所有内容以及逗号前的尾随空格,如何在rails上的ruby中执行此操作?我已经发现当字符串总是相同时如何做到这一点,但由于括号内的值并不总是相同,我发现的所有方法都失败了。
括号内的值可以是1
到3
位,因此可能的解决方案必须考虑不同的值长度。
示例字符串:
2(2) , 12(3) , 20(2) , 21(5)
我想要的结果:
2, 12, 20, 21
我尝试使用这个正则表达式:
/(... )
它捕获前3个匹配项,但不记录最后一个匹配项,因为它没有尾随空格。
仅使用(...)
会因某种原因导致2(2) , 12(3) , 20(2) , 21(5
匹配。
如何为此创建正确的正则表达式或可能是更好的解决方案?
答案 0 :(得分:1)
答案 1 :(得分:1)
s = "2(2) , 12(3) , 20(2) , 21(5)"
s.gsub(/\(.*?\) ?/, '')
=> "2, 12, 20, 21"
这应该有效。
答案 2 :(得分:0)
这个对我有用(s
代表输入字符串):
ar = s.split(',').each.map { |el| el.strip.match(/(\d*)[^\(]/) }
result = ar.each.map {|el| el[0]}
它有点大而且不是很漂亮,但确实有这个工作:)