使用正则表达式从python中的readline()中获取一些子字符串

2024-10-01 17:33:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用tcpdump来嗅探我的netrok包,我想从存储的文件中获取一些信息。我的档案有两行分开的语法,但他们重复了很多次。在

23:30:43.170344 IP (tos 0x0, ttl 64, id 55731, offset 0, flags [DF], proto TCP (6), length 443)

192.168.98.138.49341 > 201.20.49.239.80: Flags [P.], seq 562034569:562034972, ack 364925832, win 5840, length 403

我想从第一行获取时间戳(23:30:43.170344)和id(id 55731)和偏移量(23:30:43.170344)(在我的文件中都是这样的)。并存储在不同的列表中。在

从第二行(我的文件中的所有行)中获取2分离的ip(192.168.98.138.49341和201.20.49.239.80)和seq(seq 562034569:562034972)和ack(ack 364925832),并存储在不同的列表中。在

如果可以用正则表达式这样做对我更好。在


Tags: 文件ip信息id列表语法档案length
1条回答
网友
1楼 · 发布于 2024-10-01 17:33:13

对于第一部分,获取时间戳、id和偏移量。

我肯定这是一个粗糙的正则表达式。在

>>> import re
>>> l = '23:30:43.170344 IP (tos 0x0, ttl 64, id 55731, offset 0, flags [DF], proto TCP (6), length 443)'
>>> k = re.compile(r'^([0-9:]+\.[0-9]+) IP \(.* id ([0-9]+), offset ([0-9]+).*\)')
>>> x = k.match(l)
>>> x.groups()
('23:30:43.170344', '55731', '0')
>>> x.groups()[0]
'23:30:43.170344'
>>> x.groups()[1]
'55731'
>>> x.groups()[2]
'0'
>>> 

第二部分:

^{pr2}$

有关re模块的详细信息:

相关问题 更多 >

    热门问题