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工具?我觉得你用的不像正则表达式。
{{.+?}}