如果这个问题以前有人问过并回答过,我很抱歉。我找不到任何东西。
如何使用linux / regex查找电子邮件地址中的未知字符?例如,假设我们有这样的列表:
userone:123456@example.com usertwo:123@example.com userthree:12@example.com
我如何才能在列表中找到与***@example.com相匹配的电子邮件?(唯一能从中找到的电子邮件是123@example.com)
我知道grep -e '...@example\.com'可以工作,但是句点可以表示中的任何字符,所以这样做也可以找到:12@example.com。此外,大多数电子邮件地址不包含任何字符,它们通常仅限于字母、数字、句点和下划线(许多电子邮件提供者不允许任何其他内容)。
除了grep中的句点符号之外,我还需要使用其他的东西,比如a-Z0-9.u,这样就可以包含字母、数字、句点和下划线,而不包括其他任何内容。我不知道该怎么做。谢谢
编辑:到目前为止,我尝试过的是:grep -e '[a-zA-Z0-9_.]{3}@example.com' *。这不起作用,所以只能说是我弄错了。
发布于 2017-07-19 01:11:51
如果电子邮件地址总是前面有一个用户名,然后是一个冒号或空格,然后是电子邮件地址,那么您可以使用这些知识来限制您的匹配。
用户名是什么样子的?你需要知道你是否要用它来找到匹配物。假设现在它是字母,数字,破折号和下划线,它总是以字母开头,从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或者,如果在“测试”之后正好有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作为模式。
发布于 2017-07-19 00:39:28
试试这个命令行,我用来在任何文件中找到任何东西。
grep -r -i @example.com ./https://stackoverflow.com/questions/45179114
复制相似问题