【发布时间】:2017-12-24 01:11:29
【问题描述】:
如果之前有人问过并回答过这个问题,我深表歉意。我找不到任何东西。
如何使用 linux grep / regex 查找电子邮件地址中的未知字符?例如,假设我们有这个列表:
userone:123456@example.com
usertwo:123@example.com
userthree:12@example.com
如何通过 grep 查找与 ***@example.com 匹配的电子邮件?
(应该从中找到的唯一电子邮件是 123@example.com)
我知道grep -e '...@example\.com' 可以工作,但句点可以表示 grep 中的任何个字符,所以这样做也会找到:12@example.com。另外,大多数电子邮件地址不包含任何字符,它们通常仅限于字母、数字、句点和下划线(许多电子邮件提供商不允许其他任何字符)
除了 grep 中的句点符号之外,我还需要使用其他东西,例如 [a-Z0-9._] 以便包含字母、数字、句点和下划线,但仅此而已。我不确定该怎么做。谢谢
编辑:到目前为止我已经尝试过:
grep -e '[a-zA-Z0-9_.]{3}@example.com' *。这不起作用,所以归结为我弄错了正则表达式。
【问题讨论】:
-
您是否正在寻找一个正则表达式来匹配任何大小写字符、数字、句点或下划线?
-
如果需要匹配文字句点,可以用反斜杠转义:
\.。您的问题似乎与正则表达式基础有关。我建议查看regular-expressions.info 等信息网站或在 regex101.com 上进行试验。 -
是的,但在这个例子中只有 3 个字符,所以我可以用别的东西代替“...”
-
真实邮箱地址可以,其实可以包含any字符;不要将其与大多数地方“通常”所做的混淆。我通常在电子邮件地址中有
+。见regular-expressions.info/email.html -
那么
grep '123@example.com'怎么样。你不需要任何正则表达式。