红宝石正则表达式 - 如何匹配一切直到角色 -

时间:2011-06-30 17:44:43

标签: ruby-on-rails ruby regex ruby-on-rails-3

给出如下字符串:

randomstring1-randomstring2-3df83eeff2

如何使用红宝石正则表达式或其他一些ruby / rails友好方法查找所有内容直到第一个破折号 -

在上面的例子中,它将是: randomstring1

由于

4 个答案:

答案 0 :(得分:43)

您可以使用此模式:^[^\-]*

答案 1 :(得分:9)

mystring = "randomstring1-randomstring2-3df83eeff2"
firstPart = mystring[0, mystring.index("-")]

否则,我认为最好的正则表达式是@ polishchuk's。

它从字符串的开头匹配,尽可能多地匹配任何非短划线-

答案 2 :(得分:6)

使用irb你也可以这样做:

>> a= "randomstring1-randomstring2-3df83eeff2"
=> "randomstring1-randomstring2-3df83eeff2"
>> a.split('-').first
=> "randomstring1"
>> 

答案 3 :(得分:2)

对于这种情况,agent-j给出的索引解决方案可能更好。如果你确实想使用正则表达式,那么下面的非贪婪(由?)正则表达式会抓住它:

(^.*?)-

您可以在Rubular中看到它。