【问题标题】:Regex get next 2 words after certain string正则表达式在某个字符串之后获取下一个 2 个单词
【发布时间】:2014-09-16 11:30:28
【问题描述】:

我需要一个正则表达式,它可以在某些文本内容中找到名称。它应该匹配 1 到 3 个名字,First-name, (Middle-name), (Surname)。

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

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

  • 约翰
  • 约翰·多伊
  • 约翰·平均乔

特殊情况:

  • 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

【问题讨论】:

    标签: regex regular-language


    【解决方案1】:

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

    您可以使用以下内容:

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

    【讨论】:

    • 效果很好,谢谢!扩展这个正则表达式来处理特殊情况会很困难吗?
    • 是的,这很困难。有一个单独的正则表达式可能会更容易。
    • 好吧,上面的正则表达式足以解决我的问题。再次感谢:)
    猜你喜欢
    • 2015-06-14
    • 2020-11-06
    • 1970-01-01
    • 1970-01-01
    • 2017-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    相关资源
    最近更新 更多