为什么 grep 懒惰地匹配我的正则表达式?

Why does grep match my regex lazily?

我正在尝试编写一个简单的电子邮件正则表达式,并使用 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 returns "a@b.c".

我尝试了以下正则表达式:

到处看,我只发现了如何使 grep 惰性匹配的问题,因为默认值应该是贪婪的..

这个正则表达式应该适合你:

email_regex='[a-zA-Z0-9_.+-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+'

在您的正则表达式中,最后一个字符 class [a-zA-Z0-9_-] 缺少量词 +