从字符串中删除括号的结束集

时间:2013-06-20 03:49:39

标签: ruby regex

我读过[this] [1]和[this] [2],但他们并没有完全回答我的问题。

假设我有以下产品名称&代码:

Cool Product 9000 (CP9000)

我想剥离最后一个空格以及之后的所有内容,只剩下:

Cool Product 9000

我将如何实现这一目标?

如果你知道那里会有解释这个的指南或教程,请随意指出我。

编辑:如果我的原始问题有点不清楚,我表示歉意。我很感谢所有的答案,我会测试它们,看看我最喜欢哪一个作为答案。

4 个答案:

答案 0 :(得分:5)

这应该做:

string.sub!(/\s+\S*$/, '')

但是,对于括号内的善良,您也可以这样做:

string.sub!(/\s+\(.*?$/, '')

它将捕获(而不是捕获)@Phrogz给出的示例:

foo bar baz

不会被更改

foo bar (bar baz)

将变为

foo bar

答案 1 :(得分:3)

s = 'Cool Product 9000 (CP9000)'
s[0...s.rindex(" ")]
# => "Cool Product 9000"

答案 2 :(得分:2)

与OMG的方法相同,但修改s本身:

s = 'Cool Product 9000 (CP9000)'
s[s.rindex(' ')..-1] = ''

s
# => "Cool Product 9000"

答案 3 :(得分:1)

stripped = string.sub /\s*\([^)]+\)\z/, ''

那说:

  • 找到一些可选的空格\s*
  • ...后跟文字左括号\(
  • ...后跟一个或多个不是文字右括号[^)]+
  • 的字符
  • ...后跟一个文字的右括号\)
  • ...后跟字符串\z
  • 的结尾

并替换为零。