使用正则表达式提取特定日期和时间

时间:2016-09-27 16:48:25

标签: python regex

使用http://pythex.org/

测试正则表达式
  

表达式:   (\ d {2})/.-/.- \ S([0-9] | 0 [0-9] | 1 [0-9] | 2 [0-3]):[0-5] [ 0-9] $

我只希望能够打印出30/06/2016 17:15作为两个单独的变量。 以上不能工作!任何人都可以启发我的表达吗?它似乎只匹配“30/06/2016 17:15”

1 个答案:

答案 0 :(得分:0)

使用ast.literal_evalre

的组合可以正常工作

ast.literal_eval摆脱了tuple之类的结构。其余的都是小菜一碟。

此解决方案比仅使用正则表达式的解决方案更强大:

import ast,re

a = "('=====================================', '30/06/2016 17:15 T001 201603301', 'ORDER: C002946', 'Cashier: 001', '--------------------------------------')"

t=ast.literal_eval(a)

z=re.compile(r"(\d\d/\d\d/\d\d\d\d)\s(\d\d:\d\d)")

m = z.match(t[1])

if m:
    print("date: {}, time {}".format(m.group(1),m.group(2)))

结果:

date: 30/06/2016, time 17:15

说明:

  • 正则表达式不是最优的,但是一旦读取和解析了元组,这并不是最难的部分。
  • 使用time获得真正的time.strptime结构可能会更好(在这种情况下不需要正则表达式)。