gpt4 book ai didi

regex - 使用 linux grep 查找电子邮件

转载 作者:太空宇宙 更新时间:2023-11-04 10:18:08 26 4
gpt4 key购买 nike

如果之前有人提出并回答过这个问题,我深表歉意。我找不到任何东西。

如何使用 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。此外,MOST 电子邮件地址不包含任何字符,它们通常仅限于字母、数字、句点和下划线(许多电子邮件提供商不允许任何其他字符)

我需要在 grep 中使用除句点符号之外的其他内容,例如 [a-Z0-9._],以便包含字母、数字、句点和下划线,但仅包含其他内容。我不确定该怎么做。谢谢

编辑:到目前为止我尝试过的:grep -e '[a-zA-Z0-9_.]{3}@example.com' *。这行不通,所以归结为我把正则表达式弄错了。

最佳答案

如果电子邮件地址始终以用户名开头,然后是冒号或空格,然后是电子邮件地址,您可以使用该知识来限制您的匹配。

用户名是什么样的?您需要知道是否要使用它来查找匹配项。假设现在它是字母、数字、破折号和下划线,它始终以字母开头,长度为 2 到 12 个字符。我们也知道它后面有一个冒号或空格。正则表达式是

[A-Za-z][A-Za-z0-9_-]{1,11}[: ]

后面是您的电子邮件地址,这听起来像是您决定并输入的内容,因为这正是您目前正在寻找的内容。

您的 test*****@example.com 示例将是

[A-Za-z][A-Za-z0-9_-]{1,11}[: ]test.\+@example.com

或者,如果在“test”之后恰好 5 个字符

[A-Za-z][A-Za-z0-9_-]{1,11}[: ]test.....@example.com

您的原始示例 ***@example.com 是“example.com 上的任何 3 个字符的地址”并且将是

[A-Za-z][A-Za-z0-9_-]{1,11}[: ]...@example.com

一直重新输入该前缀会很痛苦,因此您希望将其包装在使用 prefix + what_i_typed 作为模式的脚本中。

关于regex - 使用 linux grep 查找电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45179114/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com