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

#regex

#регулярное выражение

Вопрос:

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

 hshd    household   8/29/2007   LB
  

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

 hshd
  

Комментарии:

1. Что плохого в разделении и получении первого элемента?

2. Потому что вопрос может быть частью более масштабной задачи регулярного выражения. Скажем, для сопоставления (a_complex_regex_pattern) (whatever_word) (another_complex_regex_pattern).

Ответ №1:

 ([^s] )
  

работает

Комментарии:

1. Я бы добавил ^, чтобы получить только первое слово

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

3. Это соответствует всем словам, а не только первому, см. Этот пример .

4. @RyanGates отмените выбор глобального, и вы увидите, что он работает так, как предполагалось и ожидалось. Если у вас все еще возникают проблемы, обратитесь к SilentGhost для получения заметок о языковых реализациях.

5. Может [^s] быть упрощено до S ?

Ответ №2:

Это должно сделать это:

 ^S*
  

Ответ №3:

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

Комментарии:

1. @ire_and_curses в Sublime Text пропускает последнее слово в строке. По какой-то причине этого не происходит: ([^ ])

Ответ №4:

Получено из ответа @SilentGhost, который я бы использовал:

 ^([S] )
  

Посмотрите этот интерактивный regexr.com страница, чтобы увидеть результат и объяснение предлагаемого решения.

Ответ №5:

для всей строки

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

Ответ №6:

Я думаю, это будет хорошим решением: /Sw*/

Ответ №7:

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

 [^ss$]{2,}
  

Ответ №8:

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

Комментарии:

1. оно получено из этого ответа.

2. Затем объясните, почему, по вашему мнению, требуется новый ответ, и объясните любую возможную разницу; но вы обнаружите, что это уже обсуждается в комментариях к принятому ответу. Кроме того, второй по величине ответ, получивший наибольшее количество голосов, очень похож, но несколько более элегантен в том смысле, что он предпочитает более простой S , чем эквивалентный, но неуклюжий [^s] .

Ответ №9:

(^S )

Это помогло мне. (/gm)

Вы могли бы протестировать его в этом