用于解析日志文件的正则表达式

ft

我有一个具有以下格式的SonicWall syslog文件:

<134>id=firewall sn=C0EAE470F7D0 time="2014-08-13 04:31:27" fw=10.2.3.4 pri=6 c=1024 m=537 msg="Connection Closed" n=301541 src=172.16.1.43:50581:X0 dst=172.16.1.1:192:X0 proto=udp/192 sent=46

我试图创建一个正则表达式,该表达式将返回在=符号上拆分的元组列表。如果一个值包含空格,它将带有双引号。我不在乎返回的值是否返回引号,只要返回带有空格的整个值即可。例如,我希望时间键同时包含日期和时间。所需的输出:

("<134>id","firewall"), ("sn","C0EAE470F7D0"), ("time", '"2014-08-13 04:31:27"')
("fw","1.2.3.4"), ("pri","6"), ... ("msg", '"Connection Closed"'), ("n", "301541")
("src","172.16.1.43:50581:X0"), ... ("sent", "46")

到目前为止,这是我所拥有的,但是在遇到带有双引号的字段时会失败。同样,在这种情况下,不返回最后一个字段“已发送”。我已经对RE进行了几个小时的尝试,尝试了各种组合,但还不能完全解决这个问题。任何帮助将不胜感激。

import re
fname = "syslog.log"
with open(fname) as fp: lines = fp.read().splitlines()
q = re.compile('(.*?)=(.*?)[\s"]',re.S|re.M)
for line in lines:
    print(line)
    key_val = q.findall(line)
    print(key_val)

这是此代码返回的内容:

[('<134>id', 'firewall'), ('sn', 'C0EAE470F7D0'), ('time', ''), 
('2014-08-13 04:31:27" fw', '10.2.3.4'), ('pri', '6'),
('c', '1024'), ('m', '537'), ('msg', ''), 
('Connection Closed" n', '301541'), ('src', '172.16.1.43:50581:X0'), 
('dst', '172.16.1.1:192:X0'), ('proto', 'udp/192')]

如果无法使用正则表达式完成此操作,那么在Python 3.3中达到所需结果的最佳方法是什么?

Strikeskids

http://regex101.com/r/wS5lX2/3

(.+?)=("[^"]*"|\S*)\s*

它能做什么

  1. 将所有非等号匹配为等号
  2. 匹配
    1. 不含引号或
    2. 没有空格的字符串
  3. 匹配空白

如果您还想删除比赛周围的引号,则可以改用此引号

http://regex101.com/r/wS5lX2/4

(.+?)=(?:"(.*?)(?<!\\)"|(\S*))\s*

它从匹配字符串中删除双引号。密钥将是组1,值将是组2或3。此外,它允许您在引用的值中包含反斜杠转义引号。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用于解析apache错误日志文件的正则表达式

来自分类Dev

用于解析配置文件的正则表达式

来自分类Dev

使用正则表达式解析特定日志?

来自分类Dev

使用正则表达式解析多行日志条目

来自分类Dev

使用正则表达式解析日志

来自分类Dev

使用正则表达式解析日志的问题

来自分类Dev

Apache访问日志正则表达式解析

来自分类Dev

正则表达式解析 Cisco 日志消息

来自分类Dev

使用正则表达式来处理日志文件:合并正则表达式

来自分类Dev

正则表达式语句,用于在日志文件中包含空格或数字值的字段

来自分类Dev

使用C#和正则表达式解析日志文件

来自分类Dev

使用正则表达式将自定义日志文件解析为字典

来自分类Dev

使用正则表达式解析日志文件以显示多行数据

来自分类Dev

Python使用正则表达式分析日志文件

来自分类Dev

正则表达式“样本监视日志文件输出”

来自分类Dev

使用正则表达式拆分日志文件

来自分类Dev

Mitel的Powershell正则表达式日志文件

来自分类Dev

使用正则表达式监视日志文件

来自分类Dev

用于解析数据的正则表达式

来自分类Dev

正则表达式,用于解析礼品卡代码

来自分类Dev

用于解析地址的正则表达式

来自分类Dev

用于换行符解析的正则表达式

来自分类Dev

用于解析:: number :: sentence ::的正则表达式

来自分类Dev

用于解析网址的正则表达式

来自分类Dev

用于Python数组解析的Python正则表达式

来自分类Dev

用于解析礼品卡代码的正则表达式

来自分类Dev

正则表达式用于解析字符串

来自分类Dev

正则表达式,用于解析复杂的数字行

来自分类Dev

Ultraedit正则表达式,用于解析复数

Related 相关文章

热门标签

归档