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

Regex 为什么grep懒洋洋地匹配我的正则表达式?,regex,email,grep,email-validation,regex-greedy,Regex,Email,Grep,Email Validation,Regex Greedy,我正在尝试编写一个简单的电子邮件正则表达式,并使用grep(在Kali-linux上,如果需要的话)提取电子邮件本身。 这是(大致)我的代码: 其中e是包含电子邮件地址的文件,例如“a@b.co.uk" 白鹭归来”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,但也检

我正在尝试编写一个简单的电子邮件正则表达式,并使用grep(在Kali-linux上,如果需要的话)提取电子邮件本身。 这是(大致)我的代码:

其中e是包含电子邮件地址的文件,例如“a@b.co.uk"

白鹭归来”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惰性匹配的问题,因为默认值应该是贪婪的。

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

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

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

顺便说一句。这也是一个有效的电子邮件地址:
foo@[1.2.3.4]
如何
email\u正则表达式='([a-zA-Z0-9.+-]+@[a-zA-Z0-9.+++](\.[a-zA-Z0-Z0-9.+]){/code>)。这将排除
a@b.com
并且作为一种副作用,检测也将排除
email@gmail.com
。在正则表达式中,
+
表示1个或更多,但根据您的帖子,您需要2个或更多,因此
{2,}
email_regex='[a-zA-Z0-9_.+-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+'