2011-06-30 20 views

Respuesta

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

De lo contrario, creo que la mejor expresión regular es la de @polishchuk.

Coincide desde el comienzo de la cadena, coincide con la mayor cantidad posible de cualquier cosa que no sea un guión -.

+0

+1, mejor solución sin expresiones regulares –

41

Usted puede utilizar este modelo: ^[^\-]*

+1

1 para la mejor expresión regular, en mi opinión. –

+0

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

+2

Tsk ... Respaldo adicional. :) Dash no necesita ser escapado cuando es el primer personaje en una clase de personaje (el símbolo de apertura no cuenta como un personaje en la clase, es un modificador de clase, específicamente significa "No" como en "Ninguno de estos personajes en esta clase " – JBB

2

Para esta situación, la solución dada por el índice de agente J es probablemente mejor. Y si lo desea utilizar expresiones regulares, la siguiente expresión regular no expansivo (especificado por el ?) sería agarrarlo:

(^.*?)- 

Se puede ver en Rubular.

5

Usando IRB puede hacer esto también:

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