【发布时间】:2015-08-26 10:53:40
【问题描述】:
ESMTPSA id 是一个类似于以下内容的字符串:
w12sm4743917pbs.68.2015.06.04.16.21.51
它可以出现在电子邮件中的 Received: from 标头中,例如以下示例:
Received: from [192.168.0.140] (n11649196059.netvigator.com. [116.49.196.59])
by mx.google.com with ESMTPSA id w12sm4743917pbs.68.2015.06.04.16.21.51
for <myemailaddress@gmail.com>
(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
Thu, 04 Jun 2015 16:21:52 -0700 (PDT)
我有以下正则表达式,可以很好地从此类标头中提取 IPv4 地址:
d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
问题是,它还提取了一部分 ESMTPSA id:015.06.04.16。亲身体验here。
我们将如何收紧正则表达式以使其仅提取 IPv4 地址?注意:地址不总是在方括号中,如上例所示。我正在使用 Python,并且我知道我可以使用 ipaddress 模块来验证所有匹配项,但首先不匹配对我来说会方便得多。
【问题讨论】:
标签: regex ip-address ipv4