作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我编写了这个正则表达式来提取电子邮件:
(\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/
我是一名优秀的程序员,十分优秀!