提取日志里面的键值对有什么好方法?目前用的 AI 写的正则

8 条回复
48 次浏览

日志发过来是:a=b c=d e=f 这种键值对空格隔开的格式,键一般是比较正常的,值可能有单双引号、反斜杠。
问了 AI,AI 给了个正则,目前用了一段时间没有什么问题。

复制
(\w+)=(".*?"|\S+)

不知道还有什么好办法,之前还遇到过 nginx 日志用空格分割,但是值里面也有空格,不知道别人怎么切割的。

种子用户
OP

我在想他们自己怎么处理日志,难道他们只分发,自己不考虑处理?如果自己处理,那怎么分割的。

种子用户

用代码也很简单吧,先查找等号,等号再往左查找到第一个空格就是 key,往右查找到下一个 key 就是 value,给 ai 说一下分分钟就给你写出代码了

种子用户
OP

值里面会出现空格也可能会有等于号(目前没发现等于号,但是空格是存在的),键不是固定的有很多不一样的名字,现在用的正则就是差不多这样,等于号是常量,前后用正则匹配。

种子用户

那 a=b c=d e=f,e=f 到底是单独的键值还是“d e=f”属于 c 的值。。。。

种子用户
OP

@opsdian 主题里面少说了一个情况,值都是双引号包起来的,所以现在用这个正则是没问题的。

种子用户
OP

目前这个正则可以处理值里有空格的情况。比如

复制
@timestamp="2025-12-15T05:50:17.047Z" proc_path="C:\Program Files (x86)\Google\GoogleUpdater\144.0.7529.0\updater.exe" 

Program Files (x86)中有空格,主题里面少说了一个情况,值都是双引号包起来的。

发表一个评论

R保持