Python正则表达式提取文件名中_time_date_格式的时间戳
解决Python正则提取完整时间戳的问题
嘿,作为Python新手遇到正则匹配的小问题太正常啦,我来帮你调整下正则表达式就搞定!
你之前写的re.search(r"\d+_(\d+)_", filename)只拿到日期部分,是因为你把捕获括号只加在了日期的\d+外面,相当于只抓取了第二个数字段。而你要的是0800_20180102这种包含时间+日期的完整戳,得把时间+下划线+日期这一整块内容放进捕获组里才行。
正确的正则写法
直接用这个代码试试:
import re # 测试第一个文件名 filename1 = "test_0800_20180102_filepath.csv" match1 = re.search(r"_(\d+_\d+)_", filename1) if match1: print(match1.group(1)) # 输出: 0800_20180102 # 测试第二个文件名 filename2 = "anotherone_0800_20180101_hello.csv" match2 = re.search(r"_(\d+_\d+)_", filename2) if match2: print(match2.group(1)) # 输出: 0800_20180101
正则逻辑解释
_:匹配文件名里的下划线,用来精准定位时间戳的前后边界(\d+_\d+):这是我们要捕获的核心内容\d+:匹配一个或多个数字(对应时间部分,比如0800)_:匹配时间和日期之间的分隔下划线\d+:匹配日期部分的数字(比如20180102)
- 最后一个
_:匹配时间戳末尾的下划线,确保我们取的是两个下划线之间的完整内容
这样调整后,就能完美提取你想要的完整时间戳啦~
内容的提问来源于stack exchange,提问作者Nisfa
相关产品推荐
相关产品推荐

