我创建了一个模式:
^(\W|^)tms_raw\.([0-9]{4})(-?)(1[0-2]|0[1-9])\2(3[01]|0[1-9]|[12][0-9])([0-2]{1})([0-3]{1}([0-5]{1})([0-9]{1})([0-5]{1})([0-9]{1}))(\.out)(\W|$)
这会尝试捕获tms_raw.YYYYMMDDHHMMSS.out
字符串
背景,我是如何创建这种模式的?
for matching YYYYMMDDHHMMSS ^([0-9]{4})(-?)(1[0-2]|0[1-9])\2(3[01]|0[1-9]|[12][0-9])([0-2]{1})([0-3]{1}([0-5]{1})([0-9]{1})([0-5]{1})([0-9]{1}))$
for matching tms_raw. ^(\W|^)tms_raw\.(\W|$)
for matching .out ^(\W|^)\.out(\W|$)
我创建的模式没有捕获,tms_raw.YYYYMMDDHHMMSS.out。
我如何组合正则表达式,我已经为匹配单个元素,匹配像tms_raw.20080108235952.out
答案 0 :(得分:1)
值会改变吗? 我会使用python re.groups来破译部分。
r = re.compile("(?P<head>[\w]*?)\.(?P<time>[\d-]*)\.(?P<ending>[\w]{3,4})")
found = r.search("tms_raw.20080108235952.out")
#if found
print( found.groupdict() )
修改
更改分组,您可以分解时间或只使用时间
myTime = datetime.datetime.strptime("20080108235952", "%Y%m%d%H%M%S")