【发布时间】:2014-02-05 19:52:24
【问题描述】:
我正在尝试显示我的日志文件的日期时间和 IP 地址:
Apr 20 07:03:53 123.345.45.123
^ ^ ^ ^
|---datetime--| |-----IP-----|
我的代码:
datetimeRegex = re.compile(r'^\w{3}\s\d\d\s\d\d:\d\d:\d\d')
IPRegex = re.compile(r'\d+.\d+.\d+.\d{1,3}')
f = open("logfile.log","r")
count = 0
for line in f.readlines():
datetime = re.match(datetimeRegex, line)
IPaddr = re.match(IPRegex, line)
if datetime and IPaddr:
count += 1
print str(count) + ":" + str(datetime.group()) + "IP: " + str(IPaddr.group())
我试图查看不匹配的内容,我认为是 IPaddr 不匹配,因为我从 if 语句中删除了 IPaddr 并且我的输出将打印日期。当我添加IPaddr 时,什么都不会打印。所以我认为我没有正确匹配我的 IP 地址。但是,我在在线正则表达式测试仪上尝试了一个示例 IP 和我的正则表达式,它似乎有效。我的正则表达式中是否缺少某些内容?还是我的逻辑有问题?如果有更快或更有效的方式来解析日志文件,我愿意接受建议。
【问题讨论】:
-
我会检查一下谢谢!
-
您确定所有日期时间字符串都与您的日期/时间 RE 匹配吗?您的示例确实如此,但是所有这些看起来都像吗?假设你有
Apr 1, 20:07:30而不是Apr 01, 20:07:30。在这种情况下,不匹配。 -
@mbratch 是的,我敢肯定,因为我一开始只测试了日期时间,并且所有的日期时间都在显示。当我包含 IPRegex 时,我得到 None 作为输出
标签: python regex python-2.7