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

The*_*xit 19 ruby regex ruby-on-rails ruby-on-rails-3

给出如下字符串:

randomstring1-randomstring2-3df83eeff2
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢

Kir*_*huk 44

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

  • Tsk ...额外的反斜杠.:)当它是字符类中的第一个字符时,Dash不需要被转义(开头插入符号不算作类中的字符,它是一个类修饰符,特别是"不是",如"不是任何一个"这堂课中的这些人物" (2认同)
  • @JBB,我同意,我的习惯...... :-) (2认同)

age*_*t-j 9

mystring = "randomstring1-randomstring2-3df83eeff2"
firstPart = mystring[0, mystring.index("-")]
Run Code Online (Sandbox Code Playgroud)

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

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


小智 6

使用irb你也可以这样做:

>> a= "randomstring1-randomstring2-3df83eeff2"
=> "randomstring1-randomstring2-3df83eeff2"
>> a.split('-').first
=> "randomstring1"
>> 
Run Code Online (Sandbox Code Playgroud)