регулярное выражение: сопоставить любое слово до первого пробела


145

У меня есть следующая строка:

hshd    household   8/29/2007   LB

Я хочу сопоставить все, что находится перед первым пробелом (пробел). Итак, в этом случае я хочу вернуться

hshd

2
Что не так с разделением и получением первого элемента?
Авинаш Радж

Ответы:


320
([^\s]+)

работает


21
Далее я бы предпочел ^, чтобы получить только первое слово
soulmerge

1
хотя в целом это правильно, я думаю, что необходимость ^зависит от конкретных реализаций языка или регулярных выражений. например, в Python вы бы использовали re.matchдля этой задачи.
SilentGhost

5
Это соответствует всем словам, а не только первому, см. Этот пример .
Райан Гейтс

1
@RyanGates отмените выбор Global, и вы увидите, что он работает так, как задумано и ожидаемо. Обратитесь к SilentGhost за примечаниями по языковым реализациям, если у вас все еще есть проблемы.
Volvox

1
@Volvox Спасибо, я пропустил это.
Райан Гейтс


12

Возможно, вы могли бы попробовать ([^ ]+) .*, что должно дать вам все до первого бланка в вашей первой группе.


@ire_and_curses, в Sublime Text, который пропустит последнее слово в строке. По некоторым причинам, это не так: ([^]) +
hello_there_andy




1

Я думаю, слово было создано с более чем одной буквы. Мое предложение:

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

-2

^ ([^ \ s] +) используйте это, это правильно соответствует только первому слову, вы можете проверить это, используя эту ссылку https://regex101.com/


это вытекает из этого ответа.
даршан

Затем объясните, почему вы считаете необходимым новый ответ, и объясните любую возможную разницу; но вы обнаружите, что это уже обсуждалось в комментариях к принятому ответу. Кроме того, второй по популярности голос с ответом довольно похож, но несколько более элегантен тем, что предпочитает более простой, \Sчем эквивалентный, но неуклюжий [^\s].
tripleee
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.