如何用正则表达式提取以'-'分隔的字符串中的邮箱地址?
提取每行第一个'-'前的邮箱地址
你用^(.*?)-得到'-'后内容,应该是工具默认返回了匹配的整体(包括'-')或者你没正确取捕获组内容。给你两个实用的正则写法:
精准匹配邮箱(更严谨)
利用邮箱必含@的特性,匹配第一个'-'前的完整邮箱:^[^-]+@[^-]+解释:
^锁定行开头,[^-]+匹配任意非'-'的字符,结合@就能精准定位到邮箱,不会误抓其他内容。匹配第一个'-'前所有内容(更简单)
如果确定每行第一个'-'前就是邮箱,直接用这个极简正则:^[^-]+解释:
[^-]+会从行首开始,一直匹配到第一个'-'为止,结果就是你要的邮箱。
另外也可以用正向预查写法,适合需要捕获组的场景:
^(.*?)(?=-)
这里(?=-)是预查符号,只会匹配到'-'的位置但不包含它,捕获组1里就是目标邮箱。
测试示例行:
a.jones@meonly.com-935567
a.smith@youonly.net-crankdev-539046
AAPets.bark@why.org-Cobbled Shoes Collective-9909
用上面任意一个正则,都能提取出对应的邮箱地址:
- a.jones@meonly.com
- a.smith@youonly.net
- AAPets.bark@why.org
内容的提问来源于stack exchange,提问作者mstannh
相关产品推荐
相关产品推荐

