q1208c 发表于 2014-08-28 08:19

标准的 access log 都有有固定格式的.

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

chosen86 发表于 2014-08-28 09:10

q1208c 发表于 2014-08-28 08:19 static/image/common/back.gif
标准的 access log 都有有固定格式的.

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

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

ssfjhh 发表于 2014-08-28 09:14

回复 12# chosen86


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

q1208c 发表于 2014-08-28 09:27

回复 12# chosen86
10.6.99.163 test1 "" ACLDENY - - - (10.6.99.163:62691 -> 210.75.65.219:80) (Pre authorization failed)   
^\[[^ \t]+\s+[^ \t]+\]\s+\[+\]\s*+\s+[^ \t]+\s+\"[^"]*\"\s+[^ \t]+\s+[^ \t]+\s+[^ \t]+\s+[^ \t]+\s\(+:+\s+->\s++:(+)\)\s+\(.*\)
下面的那个表达式匹配了整条log, 没有 "\" 的那对 "()" 里的内容, 就是要提取的内容. 现在我只取了后面的那个端口(80).
你可以试试.

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

chosen86 发表于 2014-08-28 10:12

回复 14# q1208c
恩,感谢,我已经提出来了


   

ztstuday 发表于 2014-08-29 16:08

本帖最后由 ztstuday 于 2014-08-29 16:08 编辑

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

lizhihui_kevin 发表于 2014-09-15 16:42

re.split(r'\(|\)',txt2.strip()).split(':')[-1]== > 80
页: 1 [2]
查看完整版本: python:正则表达式提取信息