gpt4 book ai didi

python - 使用正则表达式从日志文件的最后一行获取 IP 地址

转载 作者:行者123 更新时间:2023-12-01 09:19:18 25 4
gpt4 key购买 nike

我正在尝试使用 Python Regex 从日志的最后一行获取 IP 地址。

如果我搜索整个日志,我可以获得一个IP。例如:

with open("read.log", "r+") as log:
for line in log:
address = "^\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}$"
match = re.match(address, line)

但是当我尝试读取最后一行并获取 IP 地址时,我没有得到任何结果。我该如何解决这个问题?

import re

def run():

try:
logfile = open('read.log', 'r')
# print ('First line in log: ',logfile.readline())

for line in logfile:
x = line
for ip in x:
address = "^\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}$"
match = re.match(address, ip)
logfile.close
print ('Last Line: ', match)


except OSError as e:
print (e)

run()

我的 read.log 看起来像这样...

10.1.177.198 Tue Jun 19 09:25:16 CDT 2018
10.1.160.198 Tue Jun 19 09:25:38 CDT 2018
10.1.177.198 Tue Jun 19 09:25:36 CDT 2018
10.1.177.198 Tue Jun 19 09:26:38 CDT 2018
10.1.177.198 Tue Jun 19 09:27:16 CDT 2018
10.1.177.198 Tue Jun 19 09:28:38 CDT 2018

最佳答案

问题出在你的正则表达式上。 ^ 匹配行的开头,$ 匹配行尾。如果您的日志行/only/有 IP 地址,您的代码就可以工作。

>>> import re
>>> m = re.compile("^\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}$")
>>> m.search('123.123.123.123')
<_sre.SRE_Match object; span=(0, 15), match='123.123.123.123'>

然而,事实并非如此。以下更改将解决您的搜索问题:

>>> import re
>>> m = re.compile("(^\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})\s")
>>> m.search('10.1.177.198 Tue Jun 19 09:28:38 CDT 2018').groups()[0]
>>> '10.1.177.198'

关于python - 使用正则表达式从日志文件的最后一行获取 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50933454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com