【问题标题】:regular expression: match any word until first space正则表达式:匹配任何单词直到第一个空格
【发布时间】:2010-11-26 21:23:26
【问题描述】:

我有以下行:

hshd    household   8/29/2007   LB

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

hshd

【问题讨论】:

  • 拆分得到第一个元素有什么问题?
  • 因为问题可能是更大的正则表达式任务的一部分。说,匹配 (a_complex_regex_pattern) (whatever_word) (another_complex_regex_pattern)。

标签: regex


【解决方案1】:

^([^\s]+) 使用它它只正确匹配第一个单词你可以使用这个链接测试它 https://regex101.com/

【讨论】:

  • 它来自那个答案。
  • 然后解释为什么你认为需要一个新的答案,并解释任何可能的差异;但是你会发现它已经在 cmets 中讨论了接受的答案。此外,投票第二高的答案非常相似,但更优雅一些,因为它更喜欢更简单的\S,而不是同等但笨拙的[^\s]
【解决方案2】:

源自我会使用的@SilentGhost 的答案:

^([\S]+)

查看此interactive regexr.com page 以查看建议解决方案的结果和说明。

【讨论】:

    【解决方案3】:

    我认为,一个单词是由多个字母组成的。 我的建议是:

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

    【讨论】:

      【解决方案4】:

      也许您可以尝试([^ ]+) .*,它应该会为您提供第一组中第一个空白的所有内容。

      【讨论】:

      • @ire_and_curses,在 Sublime Text 上,将跳过一行中的最后一个单词。出于某种原因,这不是: ([^ ])+
      【解决方案5】:

      我认为,这将是一个很好的解决方案:/\S\w*/

      【讨论】:

        【解决方案6】:

        整行

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

        【讨论】:

          【解决方案7】:

          应该这样做:

          ^\S*
          

          【讨论】:

            【解决方案8】:
            ([^\s]+)
            

            作品

            【讨论】:

            • 我会进一步添加 ^ 以仅获取第一个单词
            • 虽然大体上是正确的,但我认为^ 的需求取决于特定的语言实现或正则表达式。例如,在 Python 中,您将使用 re.match 来完成此任务。
            • 这匹配所有单词,而不仅仅是第一个单词see this example
            • @RyanGates 取消选择 Global,您将看到它按预期和预期工作。如果您仍然遇到问题,请参阅 SilentGhost 以获取有关语言实现的说明。
            • 看来如果字符串以空格开头,这将忽略空格并返回字符串之后的第一个单词。我会认为,如果该行带有空格,它只会返回一个空字符串。
            猜你喜欢
            • 2022-12-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-07-09
            • 2022-01-25
            • 2016-01-08
            • 2014-03-25
            • 1970-01-01
            相关资源
            最近更新 更多