我正在解析一个包含以下条目的文件:
xxx-yy.biz. 39405 A 156.154.66.33
mail.global.com. 3464 A 115.113.9.64
xyx xyx xyx
webmail.xyz.com. 1463 A 115.113.9.64
gmail.com. 3464 A 115.113.9.22
我正在尝试使用字符串" mail"来取消URL及其IP地址。在其中:
for line in (dnsfile):
match = re.search(r'(.*mail.*?)\s+(.*)\s+A\s+(.*)', line)
和match.group(1)和match.group(2)给我URL和IP。
我希望扩大此搜索范围,以便我不想解析公共电子邮件,例如:gmail,hotmail,yahoo,mail。更一般:排除此列表中的单词 搜索范围。
答案 0 :(得分:1)
你可以使用负向前看,但是你需要添加开始和结束锚点,这样你也需要re.DOTALL
个标志(让锚点与每一行的开头和结尾相匹配),你可以创建你的使用|
加入单词列表时出现负面预测:
re.search(r'^(?!{})(.*mail.*?)\s+(.*)\s+A\s+(.*)$'.format('|'.join(list_of_domin)),line,re.DOTALL)
答案 1 :(得分:0)
如果不要求将其作为正则表达式的一部分,则可以进行简单的数组搜索
nothanks = ['gmail.com', 'hotmail.com']
for line in (dnsfile):
match = re.search(r'(.*mail.*?)\.\s+(.*)\s+A\s+(.*)', line)
if match:
if not match.group(1) in nothanks:
print match.group(1)