2011-06-30 12 views

回答

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

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

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

+0

+1,没有正则表达式 –

41

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

+1

+1最佳的正则表达式最好的解决办法,在我看来。 –

+0

@ agent-j,嗯...... :-) –

+2

Tsk ...额外的反斜杠。 :)当Dash不是字符类中的第一个字符时,它不需要被转义(开头的脱字符号不被视为类中的字符,而是类修饰符,具体意思是“Not”,如“Not any这些字符在这个类“ – JBB

2

对于这种情况,通过代理-J给出的指数的解决方案可能是更好的。如果你确实想使用正则表达式,以下非贪婪(由?指定)正则表达式将抓住它:

(^.*?)- 

你可以看到它在Rubular

5

使用内部评级法,你也可以这样做:

>> a= "randomstring1-randomstring2-3df83eeff2" 
=> "randomstring1-randomstring2-3df83eeff2" 
>> a.split('-').first 
=> "randomstring1" 
>> 
相关问题