正则表达式匹配单词和单词组合,没有尾随空格

时间:2015-10-12 20:38:40

标签: regex

我试图找出像这样的情况的正则表达式模式,以便序列化结果:

"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 ']+

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

2 个答案:

答案 0 :(得分:1)

一种简单的方法是:

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

使用lookahead zero-length assertions,有条件地匹配空格,逗号或字符串的结尾。此外,它将匹配任何长度的单词,如" I"或者"嗨"。

action中查看。

答案 1 :(得分:1)

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

请参阅sample