为什么 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".
我尝试了以下正则表达式:
([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_-]+)+'
在您的正则表达式中,最后一个字符 class [a-zA-Z0-9_-]
缺少量词 +
我正在尝试编写一个简单的电子邮件正则表达式,并使用 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".
我尝试了以下正则表达式:
([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_-]+)+'
在您的正则表达式中,最后一个字符 class [a-zA-Z0-9_-]
缺少量词 +