tms_raw.YYYMMDDHHMMSS.out需要正则表达式过滤器

时间:2015-02-10 18:33:27

标签: python regex

我创建了一个模式:

^(\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

这样的东西

1 个答案:

答案 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")