时间戳正则表达式python(2016-06-22 07:55:35,232)

时间:2016-06-22 17:50:54

标签: python

我发现很难在python中为上面的时间戳模式形成一个正则表达式。我必须在python的列表中搜索与此模式匹配的时间戳。

例如,

2016-06-22 07:55:35,232 [12] INFO

在上面一行中,我必须搜索2016-06-22 07:55:35,232。

我尝试使用以下正则表达式,但它似乎不起作用:

"^\\d{4}[-]?\\d{1,2}[-]?\\d{1,2} \\d{1,2}:\\d{1,2}:\\d{1,2}[,]?\\d{1,3}$"

请帮助

由于

3 个答案:

答案 0 :(得分:3)

您的问题是最后的$符号 - 将其从正则表达式中删除。由于$(行尾)与[12] INFO

不匹配,因此您无法获得任何回复
>>> re.findall("^\\d{4}[-]?\\d{1,2}[-]?\\d{1,2} \\d{1,2}:\\d{1,2}:\\d{1,2}[,]?\\d{1,3}$", '2016-06-22 07:55:35,232 [12] INFO')
[]
>>> re.findall("^\\d{4}[-]?\\d{1,2}[-]?\\d{1,2} \\d{1,2}:\\d{1,2}:\\d{1,2}[,]?\\d{1,3}", '2016-06-22 07:55:35,232 [12] INFO')
['2016-06-22 07:55:35,232']

答案 1 :(得分:0)

使用^$封装正则表达式可确保正则表达式只与正则表达式匹配整个字符串,因为^表示字符串的开头, $表示结束。如果您希望它能够在任何地方匹配,则应删除^$。如果您只希望时间戳在字符串的开头匹配,请保留^并删除$,这是阻止您获得匹配的[12] INFO,因为您logFH = CreateLog; optFH = CreateOptions; 1}}在你的字符串的末尾。

答案 2 :(得分:0)

您的模式工作正常,但由于$,您只匹配字符串末尾。

如果你想匹配这个:

2016-06-22 07:55:35,232

您可以使用此正则表达式。

(?P<date>\d{4}[-]?\d{1,2}[-]?\d{1,2} \d{1,2}:\d{1,2}:\d{1,2}[,]?\d{1,3})

您可以在Regex101

在线试用