【发布时间】:2022-01-04 13:09:35
【问题描述】:
我试图只获取“非个性化用户名”,包括其号码或姓氏。 要添加更多细节,我想完成以下操作: 如果有一个@-Symbol,把那个@-Symbol 前面的所有东西都给我,否则给我整个字符串。 另外,如果有一个点“。”在里面,把那个点之后的所有东西都给我。
假设我有以下 userPrincipalNames 和/或 displayNames 字符串:
nonpersonalizedusername004
nonpersonalizedusername019@domaina.local
prefixc.nonpersonalizedusername044@domaina.local
nonpersonalizedusername038@domainb.local
prefixa.nonpersonalizedusername002@domaina.local
prefixb.nonpersonalizedusername038@domainb.local
givenname.surname
givenname.surname@domaina.local
到目前为止我得到的是这个表达式:
^(?:.*?\.)?(.+?)(?:@.*)?$
但这只有在字符串中有@-Symbol 并且“前缀”-Dot 或者既不是Dot 也不是@-Symbol 时才有效。 如果有一个@-Symbol,但没有前缀点,我只会从最后得到那个“本地”部分。
【问题讨论】:
-
那么,
^(?:[^.@]*\.)?([^@]+?)(?:@.*)?$? regex101.com/r/lZkFv6/2 -
没有惰性量词:
^(?:[^@.]*\.)?([^@]+)(?:@.*)?$ -
对,它只是保留了 OP 的变体。
标签: regex powershell