如何使用python在时间戳之间捕获字符串?

时间:2018-01-03 06:33:14

标签: regex python-3.x python-2.7

我有以下段落

Dec 27 09:00:06 test event[1] number one
Dec 30 02:00:06 here is event[22] Feb 01 04:36:11 helloworld2
Dec 07 04:00:11 Now is event{3} Jan 01 04:36:11 Helloworld
Jan 02 23:00:11 helloworld evnt{45}
Feb 12 04:36:11 mesg10 Feb 13 04:36:11 mesg11 Feb 14 04:36:11 testmesg12

我想捕捉时间戳上发生的时间戳和消息

我使用pythex.org测试python正则表达式(?P \ w {3} \ s \ w {2} \ s \ w {2}:\ w {2}:\ w {2})\ b (ΔP。*)

但这仅适用于行分隔,并且在同一行上具有多个(1+)时间戳和消息的段落上失败。例如,在上面的段落中,我无法在Feb 12 04:36:11 mesg10 Feb 13 04:36:11 mesg11 Feb 14 04:36:11 testmesg12

上捕获时间戳和消息

1 个答案:

答案 0 :(得分:1)

这是一个 foreach($array as $r){ if($_POST['reg_id']==$r['reg_id']) { echo json_encode($r);die; // return the json of values } } echo 0; die; ?> Python解决方案,它使用2.x在日志文件的每一行中查找多个匹配项:

findall

Demo

这里面临的挑战是制定一个有效的模式。我选择了匹配时间戳的路线,然后使用前瞻来知道何时停止匹配。当我们看到另一个时间戳时,我们会停止匹配,或者我们看到该行的结尾。请注意,匹配下一个时间戳在这里不起作用,因为我们需要将其作为下一个匹配的开始,因为正则表达式在整个线路上运行。

探索演示以查看代码的实际效果。