免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: chosen86
打印 上一主题 下一主题

python:正则表达式提取信息 [复制链接]

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
11 [报告]
发表于 2014-08-28 08:19 |只看该作者
标准的 access log 都有有固定格式的.

只要写好匹配整行log的表达式, 想要哪一段都可以.

论坛徽章:
1
子鼠
日期:2014-08-28 13:27:13
12 [报告]
发表于 2014-08-28 09:10 |只看该作者
q1208c 发表于 2014-08-28 08:19
标准的 access log 都有有固定格式的.

只要写好匹配整行log的表达式, 想要哪一段都可以.


新手刚接触正则,求问提取端口号怎么配正则

论坛徽章:
4
金牛座
日期:2013-10-11 16:12:50卯兔
日期:2014-07-31 09:17:19辰龙
日期:2014-08-08 09:28:02狮子座
日期:2014-09-14 20:32:05
13 [报告]
发表于 2014-08-28 09:14 |只看该作者
回复 12# chosen86


    我给你的正则,已经提取出完整的ip和端口号信息,用python提取最后一个字符串也不是什么难事吧?

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
14 [报告]
发表于 2014-08-28 09:27 |只看该作者
回复 12# chosen86

  1. [14/Jul/2014:15:45:00 CST] [1939478272] 10.6.99.163 test1 "" ACLDENY - - - (10.6.99.163:62691 -> 210.75.65.219:80) (Pre authorization failed)   
  2. ^\[[^ \t]+\s+[^ \t]+\]\s+\[[0-9]+\]\s*[0-9.]+\s+[^ \t]+\s+\"[^"]*\"\s+[^ \t]+\s+[^ \t]+\s+[^ \t]+\s+[^ \t]+\s\([0-9.]+:[0-9]+\s+->\s+[0-9.]+:([0-9]+)\)\s+\(.*\)
复制代码
下面的那个表达式匹配了整条log, 没有 "\" 的那对 "()" 里的内容, 就是要提取的内容. 现在我只取了后面的那个端口(80).
你可以试试.

顺便说一下, 在我的机器上 好象 \d 不能用, [^\s]也有问题, 所以, 这个表达式看起来有点长.

论坛徽章:
1
子鼠
日期:2014-08-28 13:27:13
15 [报告]
发表于 2014-08-28 10:12 |只看该作者
回复 14# q1208c
恩,感谢,我已经提出来了


   

论坛徽章:
0
16 [报告]
发表于 2014-08-29 16:08 |只看该作者
本帖最后由 ztstuday 于 2014-08-29 16:08 编辑

re.findall(r"\..*?:(\d+)\D",str)

论坛徽章:
0
17 [报告]
发表于 2014-09-15 16:42 |只看该作者
re.split(r'\(|\)',txt2.strip())[1].split(':')[-1]  == > 80
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP