You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows UPN正则提取问题:命名组域名正常但用户名组无数据

解决Windows UPN正则命名组提取用户名的问题

我来帮你搞定这个问题~你提到的猜测是对的,问题根源确实和正则的匹配顺序、贪婪特性有关,导致用户名组无法捕获到内容。

问题分析

你要处理的是user@domain.local格式的UPN字符串,目标是用命名组分别提取用户名(@前的部分)和域名(@后的部分)。如果当前正则能拿到域名但拿不到用户名,大概率是你的正则匹配逻辑写反了,或者用了贪婪匹配导致用户名的字符被前面的匹配规则“吃掉”了。

举个反例,如果你的正则是类似这样的:

(?P<domain>.+)@(?P<username>.+)

这里的(.+)是贪婪匹配,会从字符串开头一直匹配到最后一个@的位置,把user@都归到domain组里,剩下的内容根本满足不了后面的@(?P<username>.+)规则,最终导致username组为空——这就是你说的“回到开头查找最后一个索引”的问题,贪婪匹配的特性会优先占满所有能匹配的字符,让后续组无字符可匹配。

正确的正则写法

调整匹配顺序和规则,用下面的正则就能准确捕获两个命名组:

(?P<username>[^@]+)@(?P<domain>.+)

规则解释:

  • (?P<username>[^@]+):命名组username,[^@]+表示匹配任意不是@的字符,直到遇到第一个@为止,完美锁定@前的用户名部分
  • @:精确匹配分隔符@
  • (?P<domain>.+):命名组domain,匹配@之后的所有剩余字符,也就是完整的域名部分

测试验证

比如输入jane.smith@example.local,用这个正则会得到:

  • username组:jane.smith
  • domain组:example.local

完全符合你的提取需求~

内容的提问来源于stack exchange,提问作者user1839601

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:01:10