用于解析姓氏和名字字符串的正则表达式,其中姓氏可以是大写的和/或连接的
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 字母。
我需要一个正则表达式来 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 字母。