gpt4 book ai didi

java - 为什么我会得到这个正则表达式分组?

转载 作者:行者123 更新时间:2023-12-01 05:25:16 25 4
gpt4 key购买 nike

我编写了这个正则表达式来提取电子邮件:

(\w+)\s*(?:@|(at)|(\s*at\s*)|(\(at\)))\s*((\w+)(?:\.|\s*dot\s*)(\w+)*(?:\.|\s*dot\s*)*)+com

我的要求是域名可以有两种形式:domain.com 或 sub.domain.com

运行显示总组数为7

对于:
user@domain.com
组 0,user@domain.com
组 1,用户
第 2 组,空
第 3 组,空
第 4 组,空
第 5 组,域。
第 6 组,域

为什么我会出现这种“聚类”现象?我想要的只是提取用户名和域。

最佳答案

每对括号都会在您的模式中添加一个新组。简单来说,您不需要全部。我尝试过这个表达:

(\w+[\.\w+]*)\s*(?:@|at|\s*at\s*|\(at\))\s*(\w+(?:\.|\s*dot\s*)\w+*(?:\.|\s*dot\s*)*)+com

正确匹配:

john.smith@sub.domain.com
\1: john.smith
\2: sub.domain

john.smith@domain.com
\1: john.smith
\2: domain

johnsmith@domain.com
\1: johnsmith
\2: domain

关于java - 为什么我会得到这个正则表达式分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9779645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com