我编写了这个RegEx来提取电子邮件:
(\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,域
为什么我会得到这个“集群”?所有我想要的是提取用户名和域名。
发布于 2012-03-20 08:10:50
每对括号都会在您的模式中添加一个新组。简单地说,你并不需要所有的它们。我试过这个表达:
(\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: domainhttps://stackoverflow.com/questions/9779645
复制相似问题