我使用astrogrep搜索电子邮件
让我非常宽容我正在使用这个正则表达式:[a-z0-9_.-]+@[a-z0-9_.-]+
但我必须忽略该搜索中的一些电子邮件
如果我在电子邮件的开头找到ABCD或YXZ,例如ABCDsomething@something.com
和YXZ 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开头的那个
答案 0 :(得分:0)
你可以使用这样的负向前瞻:
import numpy as np
def process_row(row, row_num, out):
row = row.split()
nvals = len(row)
out[row_num,:nvals] = row
def process_file(fname, shape):
data = np.zeros(shape)
with open(fname) as fin:
for i, row in enumerate(fin):
process_row(row, i, data)
return data
data = process_file(fname="C:/temp/temp.txt", shape=(15,5))
data[data != 0] += 129
如果在输入开始时找到(?!\b(abcd|xyz))[a-z0-9_.-]+@[a-z0-9_.-]+\b
或abcd
,则匹配将失败。
答案 1 :(得分:0)
似乎答案是\b(?!abcd|xyz)[a-z0-9_.-]+@[a-z0-9_.-]+