正则表达式在某些字符串后获得接下来的2个单词

时间:2014-09-16 11:30:28

标签: regex regular-language

我需要一个正则表达式,它可以在某些文本内容中找到名称。它应匹配1到3个名字,名字,(中间名),(姓氏)。

我有一个有效的名字列表,用于搜索文本。如果在文本中找到了first-name,则正则表达式应该获得下一个中间名或/和姓氏(如果存在)。

作为示例,下面的名称应该是找到的有效名称:

  • 约翰
  • John Doe
  • John Average Joe

特殊情况:

  • John平均Doe(如果,可能它应匹配/找到John Doe)

到目前为止,我的解决方案是:

\b(John|Mary|Tom)\b(?:(?:([^A-Za-z]*[A-Z][^\s,]*)*[^A-Za-z]+)){0,3}

这种方法有效,问题是只能匹配最多3个单词的限制,这不是。

在线测试:http://regex101.com/r/aM7bS3/2

1 个答案:

答案 0 :(得分:1)

我修改了你的正则表达式HERE

您可以使用以下内容:

\b(Mogens|Victor|John)(\b\s*([A-Z]\w+)){0,2}