Regex re2:在成对分隔符之间提取多个字段

Regex re2:在成对分隔符之间提取多个字段,regex,re2,Regex,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:29793 2] 以模块为键提取standard_task_runner.py 3] 以行作为键提取53 4] 使用loglvl作为键提取INFO 使用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:29793

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

3] 以行作为键提取
53

4] 使用loglvl作为键提取
INFO

使用re2工具,我如何做到这一点? 我尝试过的正则表达式:

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

以下正则表达式将

  • 时间戳
  • 脚本的名称
  • 线路
  • 对数电平
解释
  • {{
    }
    匹配文字
    {{
    }
  • +?
    将匹配任何字符,直到找到
    }
    为止,即它将在第一个
    }

  • 你尝试过什么吗?@NathanBenton它很容易通过使用以下正则表达式实现
    {.+?}
    {.+?}
    是的,很抱歉没有注意到:
    “(*tsB{}tsE)(*fnA{}fnB)(*lnB{}}lblne)(*lvlvle)”
    什么是re2工具?我觉得你用的不像正则表达式。
    {{.+?}}