找到匹配特定正则表达式的字符串,然后从该列表中排除任何匹配一个或多个条件的内容

find string that match specific regex then exclude from that list anything that match one ore more conditions

我正在使用 astrogrep 搜索电子邮件

为了让它变得非常宽容,我正在使用这个正则表达式:[a-z0-9_.-]+@[a-z0-9_.-]+

但我不得不忽略来自该搜索的一些电子邮件

如果我在电子邮件的开头找到 ABCD 或 YXZ,例如 ABCDsomething@something.comYXZ something@something.com 我必须将其从结果中排除

我尝试过一些类似的东西;

(?!abcd)|([a-z0-9_.-]+)@[a-z0-9_.-]+
^(?!abcd+)|([a-z0-9_.-]+)@[a-z0-9_.-]+
(?!abcd)([a-z0-9_.-]+)@[a-z0-9_.-]+
(?!abcd+)([a-z0-9_.-]+)@[a-z0-9_.-]+

等...

当我在 google 上搜索时,这似乎很容易,但我似乎找不到让它工作的方法

编辑

在一个文件夹中创建 3 个文本文件 第一个文件包含 3 行:

abcdsomething@something.com
xyzsomething@something.com
something@something.com

第二个文件1行

something@something.com

第三个文件3行

email1="abcdsomething@something.com"
email2="xyzsomething@something.com"
email3="something@something.com"

使用 astrogrep 搜索该文件夹,不区分大小写

预期结果在每个文件中找到 1 封电子邮件

使用 [a-z0-9_.-]+@[a-z0-9_.-]+ 我可以正确接收所有电子邮件,但我只想忽略以 abcd / xyz

开头的电子邮件

你可以像这样使用负前瞻:

(?!\b(abcd|xyz))[a-z0-9_.-]+@[a-z0-9_.-]+\b

如果在输入的开头找到 abcdxyz,这将导致匹配失败。

好像是这个答案\b(?!abcd|xyz)[a-z0-9_.-]+@[a-z0-9_.-]+