re2:在成对的定界符之间提取多个字段

问题描述

我有一个日志文件。日志文件中的每一行(或记录)都保留以下格式:

tsB{{2020-08-18 15:02:29,793}}tsE,fnB{{standard_task_runner.py}}fnE,lnB{{53}}lnE,lvlB{{INFO}}lvlE

这是我想做的

1]以时间戳为键提取2020-08-18 15:02:29,793

2]以模块为键提取standard_task_runner.py

3]以行为键提取53

4]以loglvl为键提取INFO

使用re2工具,我该怎么做? 我尝试过的正则表达式:

"(*tsB{{<timestamp>}}tsE) (*fnA{{<module>}}fnB) (*lnB{{<line>}}lnE) (*lvlB<loglvl>lvlE)"

解决方法

以下正则表达式将match

  • 时间戳
  • 脚本名称
  • 线
  • loglevel
{{.+?}}

解释

  1. {{}}匹配文字{{}}
  2. .+?将匹配任何字符,直到找到}},即它将停在第一个}}