匹配和捕获字符串中的多个名称

时间:2014-02-23 11:42:09

标签: regex

我的句子可能如下:

  

Name1,Name2,Name4,Name5都喜欢你的图片

或者像这样

  

Name1,Name2,Name4和Name5喜欢你的形象

我需要定期的表现来匹配所有的名字。我已经设法在一个表达式中抓住了两个案例中的所有前四个名字,但不知怎的,我没有从这些中得到Name5,我无法弄清楚原因。

这是我的正则表达式:

[a-zA-Z0-9_\.]+(?=,| and)

<小时/> 演示: http://www.phpliveregex.com/p/3U4(点击preg_match_all
演示2 http://www.phpliveregex.com/p/3U5(有效的版本,请确认)


我的正则表达式出了什么问题?

2 个答案:

答案 0 :(得分:2)

您可以在示例中以这种方式捕获所有名称

[a-zA-Z0-9_.]+(?=,| and| have)

明细:.在括号

时不需要转义

答案 1 :(得分:0)

您的正则表达式需要其中一个字符串","" and"来跟踪匹配(这就是positive lookahead assertion (?=,| and)所针对的内容)。他们都没有为Name5这样做。