Regex 为什么grep懒洋洋地匹配我的正则表达式?
我正在尝试编写一个简单的电子邮件正则表达式,并使用grep(在Kali-linux上,如果需要的话)提取电子邮件本身。 这是(大致)我的代码: 其中e是包含电子邮件地址的文件,例如“a@b.co.uk" 白鹭归来”a@b.c“ 我尝试了以下正则表达式: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,但也检
-返回”a@b.co"([a-zA-Z0-9.+-]+@[a-zA-Z0-9.+]\)+[a-zA-Z0-9.+]+)
-返回”a@b.co.uk,但也检测到a@b..com“作为一个有效的地址,我不想这样([a-zA-Z0-9.+-]+@[a-zA-Z0-9.+\.[a-zA-Z0-9.+])
- 其他一些事情也没有产生好的结果
无论我到哪里,我都只发现了如何使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_-]+)+'