这个字符串的Ruby正则表达式?

时间:2012-04-02 16:10:11

标签: ruby regex string

我正在尝试获取此字符串中的第一个单词:Basic (11/17/2011 - 12/17/2011)

所以最终还是希望得到Basic

其他示例字符串:Premium (11/22/2011 - 12/22/2011)

格式总是“单字后跟括号日期范围”,我只想要单词。

7 个答案:

答案 0 :(得分:4)

使用此:

str = "Premium (11/22/2011 - 12/22/2011)"
str.split.first # => "Premium"

如果您未指定任何内容,则拆分使用' '作为默认参数 之后,获取带有first

的第一个元素

答案 1 :(得分:2)

你不需要regexp,你可以使用

str.split(' ')[0]

答案 2 :(得分:1)

我知道你找到了你需要的答案,但万一有人在将来偶然发现这个问题,以便从未知长度的String中获取所需的价值:

word_you_need = s.slice(/(\b[a-zA-Z]*\b \(\d+\/\d+\/\d+ - \d+\/\d+\/\d+\))/).split[0]

答案 3 :(得分:0)

此正则表达式将匹配第一个单词与尾随空格

"^\w+ ??"

答案 4 :(得分:0)

如果你真的想要一个正则表达式,你可以在使用这个正则表达式后获得第一组:

(\w*) .*

答案 5 :(得分:0)

“单字后跟括号日期范围”

'word'和'括号日期范围'应该更好地定义
因为,根据您的要求声明,它们应该是锚点和/或分隔符。

这些原始正则表达式只是一般猜测。

\w+(?=\s*\([^)]*\))

\w+(?=\s*\(\s*\d+(?:/\d+)*\s*-\s*\d+(?:/\d+)*\s*\))

答案 6 :(得分:0)

实际上,您只需要:

s.split[0]

...或...

s.split.first