【问题标题】:Regex Expression to parse a Last and First name string where Last name may be upper and / or concatenated正则表达式解析姓氏和名字字符串,其中姓氏可能是大写和/或连接的
【发布时间】:2021-10-02 18:48:40
【问题描述】:

我需要一个正则表达式来为某些名称输入字符串准确返回三个 MATCHES(不是组),这些输入字符串可以通过以下任何一种方式进行格式化:

Last First Middle

LAST First Middle

Last FirstMiddle

LAST FirstMiddle

LastFirst Middle

LASTFirst Middle

LastFirstMiddle

LASTFirstMiddle

到目前为止,我已经解决了这个问题:([A-Z]{2,})?([A-Z][a-z]*) 当姓氏大写并与名字连接时,它会为除“LASTFirstMiddle”和“LASTFirst Middle”之外的所有场景正确返回三个 MATCHES。

重要的是结果产生三个 MATCHES,而不是组。

请您推荐一个可以支持这一点的正则表达式吗?谢谢。

【问题讨论】:

    标签: regex match


    【解决方案1】:

    你可以使用

    [A-Z]{2,}(?=[A-Z][a-z]|\b)|[A-Z][a-z]*
    

    请参阅regex demo详情

    • [A-Z]{2,}(?=[A-Z][a-z]|\b) - 两个或多个大写 ASCII 字母后跟一个大写 ASCII 字母,然后是一个小写 ASCII 字母,或单词边界
    • | - 或
    • [A-Z][a-z]* - 一个大写 ASCII 字母,然后是零个或多个小写 ASCII 字母。

    【讨论】:

    • 谢谢 Wiktor - 这两个选项都可以完美运行并且是一个很好的解决方案 - 也感谢您的解释。这将非常有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多