我正在努力将一个使用grep的regex转换成Python。你知道吗
基本上,它是一个非二进制文件,所以它在日志消息中非常混乱。你知道吗
我想做的是有一个匹配,向后看为第一次发现邮票,然后向前看,直到某个匹配。你知道吗
让我举个例子。你知道吗
文本
23:31:57.968: VERBOSE: Heartbeat from NanoPC received 23:54:07.968: INFORMATION: InformationEventTriggered#123 (serverIP:Unknown, protocol:TCP) ClientID: 1 23:55:57.968: VERBOSE: Heartbeat from NanoPC received 23:56:57.968: VERBOSE: Heartbeat from NanoPC received 23:59:07.968: WARNING: WarningEventTriggered#123 (serverIP:Unknown, protocol:TCP) ClientID: 1
预期产量
捕获每次写入InformationEventTriggered或WarningEventTriggered时,将时间戳移到左侧并选择所有内容,直到clientID。 在本例中,有两个匹配项:
我尝试了什么 我正在使用re-Python:
(\d{2}:\d{2}:\d{2}.\d{3}.*)(InformationEventTriggered\#|WarningEventTriggered\#).*(?=ClientID)
第一个选择日期的组,然后将事件消息之前的所有内容(.*)发送到clientID。你知道吗
遗憾的是,它不起作用:https://regex101.com/r/dPCDtz/1
欢迎任何帮助。你知道吗
你可以用
请参见regex demo,详细信息:
\b
-词边界(\d{2}:\d{2}:\d{2}\.\d{3}:(?:(?!\b\d{2}:\d{2}:\d{2}\.\d{3}:).)*?)
-第1组:\d{2}:\d{2}:\d{2}\.\d{3}
-2位,:
,2位,:
,2位,.
,3位:
-结肠(?:(?!\b\d{2}:\d{2}:\d{2}\.\d{3}:).)*?
-任何字符,0+次,但尽可能少,不开始初始模式序列(见上文)((?:Information|Warning)EventTriggered#)
-第2组:Information
或|Warning
然后EventTriggered#
(.*?)
-第3组:任何0+字符尽可能少(?=ClientID|\Z)
-直到第一次出现ClientID
或字符串结尾。你知道吗Python snippet:
输出:
相关问题 更多 >
编程相关推荐