ruby正则表达式 – 如何匹配一切直到角色 –

给出如下字符串:

randomstring1-randomstring2-3df83eeff2 

我怎样才能使用ruby正则表达式或其他一些ruby / rails友好方法来查找所有内容,直到第一个破折号 –

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

谢谢

你可以使用这种模式: ^[^\-]*

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

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

它从字符串的开头匹配,尽可能多地匹配任何不是破折号的东西-

使用irb你也可以这样做:

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

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

 (^.*?)- 

你可以在Rubular中看到它。