2011-06-30 11 views

Odpowiedz

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

W przeciwnym razie, myślę, że najlepszym regex jest @ polishchuk's.

Dopasowuje od początku napisu, dopasowuje dowolną liczbę rzeczy, które nie są kreskami -.

+0

+1, Najlepsze rozwiązanie bez regex –

41

Można użyć tego wzoru: ^[^\-]*

+1

+1 dla najlepszego regex, moim zdaniem. –

+0

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

+2

Tsk ... Extra backslash. :) Dash nie musi być zmieniony, gdy jest to pierwszy znak w klasie postaci (karetka otwierająca nie liczy się jako znak w klasie, jest modyfikatorem klasy, konkretnie oznaczającym "Nie", jak w "Nie ma żadnego z te postacie w tej klasie " – JBB

2

Dla tej sytuacji rozwiązanie wskaźnik podany przez agenta-j jest chyba lepiej. Jeśli chciał użyć wyrażeń regularnych, następujący zakaz chciwy (określony przez ?) regex by go chwycić:

(^.*?)- 

Widać to w Rubular.

5

Korzystanie IRB można to zrobić też:

>> a= "randomstring1-randomstring2-3df83eeff2" 
=> "randomstring1-randomstring2-3df83eeff2" 
>> a.split('-').first 
=> "randomstring1" 
>> 
Powiązane problemy