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

2
Co jest złego w dzieleniu i zdobywaniu pierwszego elementu?
Avinash Raj

Odpowiedzi:


319
([^\s]+)

Pracuje



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


12

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


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


4

dla całej linii

^(\w+)\s+(\w+)\s+(\d+(?:\/\d+){2})\s+(\w+)$


1

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

[^\s\s$]{2,}

-2

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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.