我正在尝试编写一个简单的电子邮件正则表达式,并使用grep(在Kali linux上,如果重要的话)提取电子邮件本身。 这(大概)是我的代码:
email_regex='([a-zA-Z0-9_.+-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-])+)'
egrep -o "$email_regex" e
其中e是包含电子邮件地址的文件,例如“ a@b.co.uk”
egrep返回“ a@b.c”。
我尝试了以下正则表达式:
([a-zA-Z0-9_.+-]+@([a-zA-Z0-9_-]\.)+[a-zA-Z0-9_-]+)
-返回“ a@b.co” ([a-zA-Z0-9_.+-]+@[a-zA-Z0-9_-]+\.[a-zA-Z0-9._-]+)
-返回“ a@b.co.uk”,但也检测到“ a@b.com。”为有效地址,我不希望这样。在我到处看的地方,我只发现了关于如何使grep延迟匹配的问题,因为默认值应该是贪婪的。
答案 0 :(得分:1)
此正则表达式应为您工作:
email_regex='[a-zA-Z0-9_.+-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+'
在您的正则表达式中,最后一个字符类[a-zA-Z0-9_-]
缺少量词+