正则表达式按账户类型提取内容:修复SERVICE账户捕获异常
正则表达式修复方案
针对你遇到的服务账户拆分问题,核心思路是优先匹配服务账户模式,避免其进入人类账户的拆分逻辑。以下是修复后的正则及详细说明:
修复后的正则表达式
^(?:(-?)(admin|top)-|ADMIN: )?(?: (?<FirstName>(?:-?(?:service|svc)[-.].+|SERVICE: .+|.*ServiceAccount.*))| (?: (?<FirstName>[^\n ]+)(?: (?<MiddleName>\w+))? (?<LastName>[A-Z])[^\n]*| (?<FirstName>[^\n]+) ) )$
规则说明
- 前缀匹配:处理可选的管理员前缀,包括
-admin-、admin-、ADMIN:、-top-、top-。 - 服务账户分支:优先匹配以下服务账户特征,将完整内容直接存入
FirstName:- 带/不带
-前缀的service/svc开头,后跟-或.及任意内容(如-service-something、svc.something) SERVICE:开头的字符串(如SERVICE: Something)- 包含
ServiceAccount的字符串(如someServiceAccount)
- 带/不带
- 人类账户分支:非服务账户按两种情况处理:
- 含空格的姓名:捕获第一个空格前的内容为
FirstName,可选中间名,提取姓氏首字母存入LastName - 无空格的姓名:直接将全部内容存入
FirstName
- 含空格的姓名:捕获第一个空格前的内容为
示例验证结果
| 账户名称 | FirstName | LastName | MiddleName |
|---|---|---|---|
| -admin-JohnS | JohnS | 无 | 无 |
| admin-JohnS | JohnS | 无 | 无 |
| ADMIN: John Smith | John | S | 无 |
| -top-JohnS | JohnS | 无 | 无 |
| top-JohnS | JohnS | 无 | 无 |
| John Smith | John | S | 无 |
| John Peter Smith | John | S | Peter |
| -service-something | -service-something | 无 | 无 |
| service-something | service-something | 无 | 无 |
| -svc-something | -svc-something | 无 | 无 |
| svc-something | svc-something | 无 | 无 |
| svc.something | svc.something | 无 | 无 |
| SERVICE: Something | SERVICE: Something | 无 | 无 |
| someServiceAccount | someServiceAccount | 无 | 无 |
内容的提问来源于stack exchange,提问作者K str
相关产品推荐
相关产品推荐

