找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 3933|回复: 4

[已解决] 关于python的正则表达式

7

主题

25

帖子

25

积分

贫民

积分
25
阿花花花 发表于 2016-8-17 10:09:40 | 显示全部楼层 |阅读模式
想用PY写一个日志分析的脚本,,日志格式如下:

|1983|NULL|2016-05-23 00:01:21|2016-05-22 23:59:33|NULL|4|10.3.15.222|Failed to login through SNMP. (Ip=10.15.214.91, Times=6, Reason=the community was incorrect)|NULL|NULL|NULL|NULL|NULL|NULL|NULL|NULL|NULL|NULL|NULL|NULL|%%01SNMP/4/SNMP_FAIL(s)[4125133]:|NULL|NULL|NULL

现在想把源IP和目的IP分开,并保存到两个列表中,,我就是不知道如何提取源和目的IP,,下面是我的2条正则:

IP_LIST0=re.findall(r'\d+\.\d+\.\d+\.\d+',line)      源IP处理
IP_LIST1=re.findall(r'\d+\.\d+\.\d+\.\d+',line)      目的IP处理

小弟不知道该如何修改正则,才能使源IP处理的正则只匹配第一个IP,,,目的IP处理的正则只匹配第二个IP。。。



回复

使用道具 举报

7

主题

15

帖子

15

积分

贫民

积分
15
z2807866996 发表于 2016-8-17 11:14:07 | 显示全部楼层
用re.match(),不用findall,这样取的时候group(1)就是第一个源IP,group(2)就是目的IP
回复 支持 反对

使用道具 举报

7

主题

15

帖子

15

积分

贫民

积分
15
z2807866996 发表于 2016-8-17 11:14:50 | 显示全部楼层
z2807866996 发表于 2016-8-17 11:14
用re.match(),不用findall,这样取的时候group(1)就是第一个源IP,group(2)就是目的IP ...

re.search(),打错了,不是match
回复 支持 反对

使用道具 举报

7

主题

25

帖子

25

积分

贫民

积分
25
阿花花花  楼主| 发表于 2016-8-17 14:57:21 | 显示全部楼层
z2807866996 发表于 2016-8-17 11:14
re.search(),打错了,不是match

但是,实际上有几个G的日志需要这样做,IP不尽相同,,还要设计到IP的去重。。
回复 支持 反对

使用道具 举报

50

主题

1057

帖子

1108

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1108

活跃会员热心会员最佳导师默默耕耘突出贡献优秀版主荣誉管理论坛元老

blueelwang 发表于 2016-8-17 18:52:51 | 显示全部楼层
对列表使用set()进行去重就可以啦
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表