【问题标题】:regex match words and combinations of words without trailing space正则表达式匹配单词和单词组合,没有尾随空格
【发布时间】:2015-10-12 20:38:40
【问题描述】:

我正在尝试找出这种情况的正则表达式模式以序列化结果:

"july 25, 2010" => ([0]=>july)

"red, white, blue" => ([0]=>red, [1]=>white, [2]=>blue)

"redish blue, orange" => ([0]=>redish blue, [1]=>orange)

"july 2015" => ([0]=>july)

"that's awesome" => ([0]=>that's awesome)

我想捕获所有有限制的单词/单词组合:

  • 只有单词不是数字或撇号以外的字符
  • 中间有空格的单词将被包含在一起

到目前为止,我想出了:

\w[A-Za-z ']+

但我得到尾随空格。所以这匹配“七月”而不是“七月”。如何在保持单词之间的空格的同时防止尾随空格。

【问题讨论】:

    标签: regex


    【解决方案1】:

    您可以添加一个不带空格的最后一个字符匹配: \w[A-Za-z ']*[A-Za-z']

    sample

    【讨论】:

    • 不过你的更简单、更快。
    【解决方案2】:

    一种简单的方法是:

    [a-z][a-z' ]*(?= |,|$)
    

    这是使用lookahead zero-length assertions,有条件地匹配空格、逗号或字符串的结尾。此外,它将匹配任何长度的单词,例如“I”或“hi”。

    查看action

    【讨论】:

      猜你喜欢
      • 2013-07-09
      • 2016-03-02
      • 1970-01-01
      • 1970-01-01
      • 2018-06-12
      • 2017-12-24
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      相关资源
      最近更新 更多