用于解析姓氏和名字字符串的正则表达式,其中姓氏可以是大写的和/或连接的

Regex Expression to parse a Last and First name string where Last name may be upper and / or concatenated

我需要一个正则表达式来 return 恰好三个匹配(不是组)的一些名称输入字符串可以通过以下任何方式格式化:

Last First Middle

LAST First Middle

Last FirstMiddle

LAST FirstMiddle

LastFirst Middle

LASTFirst Middle

LastFirstMiddle

LASTFirstMiddle

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

重要的是结果产生三个匹配项,而不是组。

你能推荐一个支持这个的正则表达式吗?谢谢。

您可以使用

[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 字母。