wyrażenie regularne: dopasuj dowolne słowo do pierwszej spacji

145

Mam następujący wiersz:

hshd    household   8/29/2007   LB

Chcę dopasować wszystko, co znajduje się przed pierwszą spacją (białą spacją). Więc w tym przypadku chcę wrócić

hshd
Kaczor
źródło
2
Co jest złego w dzieleniu i zdobywaniu pierwszego elementu?
Avinash Raj

Odpowiedzi:

319
([^\s]+)

Pracuje

SilentGhost
źródło
21
Dodałbym
1
Chociaż ogólnie poprawne, myślę, że potrzeba ^zależy od konkretnych implementacji języka lub wyrażenia regularnego. na przykład w Pythonie, którego używałbyś re.matchdo tego zadania.
SilentGhost
5
To pasuje do wszystkich słów, a nie tylko do pierwszego, zobacz ten przykład .
Ryan Gates
1
@RyanGates odznacz opcję Global, a zobaczysz, że działa zgodnie z zamierzeniami i oczekiwaniami. Skorzystaj z SilentGhost, aby uzyskać uwagi dotyczące implementacji języków, jeśli nadal masz problemy.
Volvox
1
@Volvox Dzięki, przegapiłem to.
Ryan Gates
46

To powinno wystarczyć:

^\S*
Jeremy Stein
źródło
12

Być może mógłbyś spróbować ([^ ]+) .*, co powinno dać ci wszystko do pierwszego miejsca w pierwszej grupie.

dsolimano
źródło
@ire_and_curses w Sublime Text, który pominie ostatnie słowo w linii. Z jakiegoś powodu to nie: ([^]) +
hello_there_andy
6

Na podstawie odpowiedzi @SilentGhost użyłbym:

^([\S]+)

Sprawdź tę interaktywną stronę regexr.com, aby zobaczyć wynik i wyjaśnienie sugerowanego rozwiązania.

MaEtUgR
źródło
4

dla całej linii

^(\w+)\s+(\w+)\s+(\d+(?:\/\d+){2})\s+(\w+)$
w35l3y
źródło
1

Myślę, że to będzie dobre rozwiązanie: /\S\w*/

Jeremy Clarkson
źródło
1

Myślę, że słowo zostało stworzone z więcej niż jednej litery. Moja sugestia to:

[^\s\s$]{2,}
Behzad
źródło
-2

^ ([^ \ s] +) użyj tego, poprawnie dopasowuje tylko pierwsze słowo, które możesz przetestować za pomocą tego linku https://regex101.com/

darszan
źródło
pochodzi z tej odpowiedzi.
darszan
Następnie wyjaśnij, dlaczego uważasz, że wymagana jest nowa odpowiedź, i wyjaśnij wszelkie możliwe różnice; ale przekonasz się, że jest to już omówione w komentarzach do zaakceptowanej odpowiedzi. Również druga najwyżej oceniona odpowiedź jest dość podobna, ale nieco bardziej elegancka, ponieważ preferuje prostszą \Sod równoważnej, ale niezgrabną [^\s].
tripleee