正则表达式:匹配第一个空格之前的任何单词。

206

我有如下代码:

hshd    household   8/29/2007   LB

我想匹配第一个空格(空白字符)之前的任何内容。 所以,在这种情况下,我想要返回

hshd

2
将其拆分并获取第一个元素有什么问题? - Avinash Raj
2
因为这个问题可能是更大的正则表达式任务的一部分。比如,匹配(一个复杂的正则表达式模式)(任何单词)(另一个复杂的正则表达式模式)。 - aafulei
9个回答

449
([^\s]+)

工作正常


31
我会进一步添加 ^ 以仅获取第一个单词。 - soulmerge
6
这可以匹配所有单词而不仅仅是第一个单词,请参考此示例 - Ryan Gates
1
@RyanGates 取消选择全局,你会发现它按预期和意图工作。如果你仍然有困难,请参考SilentGhost的语言实现注释。 - Volvox
1
似乎如果字符串以空格开头,它将忽略空格并返回字符串后的第一个单词。我认为如果行以空格开头,它应该只返回一个空字符串。 - user2211907
3
“Could [^\s]+ be simplified to \S+ ?” 可以简化为“\S+”吗? - Jonathan Hartley
显示剩余4条评论

74
这应该可以解决问题:
^\S*

15

或许你可以尝试使用([^ ]+) .*,这应该会将第一个组中的所有内容提取到第一个空格为止。


@ire_and_curses,在Sublime Text中,这将跳过一行中的最后一个单词。出于某种原因,这样做不起作用:([^ ])+ - hello_there_andy

11

参考@SilentGhost的回答,我会使用以下代码:

^([\S]+)

查看此交互式regexr.com页面以查看建议解决方案的结果和说明。


6
整行都要
^(\w+)\s+(\w+)\s+(\d+(?:\/\d+){2})\s+(\w+)$

4
我认为这将是一个好的解决方案:/\S\w*/。它涉及到IT技术。

2

我认为,一个单词由不止一个字母组成。

我的建议是:

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

1

^([^\s]+) 使用这个正则表达式可以正确匹配第一个单词,你可以使用此链接进行测试https://regex101.com/


从那个答案中得出的内容。 - darshan
1
然后解释为什么需要一个新的答案,并解释可能的区别;但是你会发现这已经在接受的答案的评论中讨论过了。此外,第二高票的答案非常相似,但更加优雅,因为它更喜欢简单的\S而不是等效但笨重的[^\s] - tripleee

1

(^\S+)

这对我很有帮助。 (/gm)

你可以在这里测试它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接