You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python正则表达式:如何从文本末尾提取最后一个日期?

嘿,作为Python新手遇到这种小问题太正常啦~其实你完全不用纠结复杂的正则,分两种情况给你说最实用的解决办法:

方法1:如果datelist是真正的Python列表(首选!)

你给出的内容看起来就是标准的Python列表,这种情况根本不需要正则表达式,直接用列表的负索引就能轻松拿到最后一个元素,这是Python里处理列表最基础的操作之一:

# 你的日期列表
datelist = ['2018-02-15 00:48:14 -0800', '2018-02-15 04:15:00 -0800', '2018-02-15 06:19:09 -0800', '2018-02-15 09:53:55 -0800', '2018-02-15 14:02:52 -0800']

# 取最后一个元素
last_date = datelist[-1]

print(last_date)
# 输出结果:2018-02-15 14:02:52 -0800

简单解释下:Python里列表的[-1]代表取倒数第一个元素,[-2]是倒数第二个,以此类推,比写正则高效太多啦!

方法2:如果datelist是字符串形式的列表(比如把列表转成了字符串存储)

要是你手里的内容是类似"['2018-02-15...', ...]"的字符串,那才需要用到正则。你之前的正则用了非贪婪匹配.*?,所以会匹配到第一个符合条件的内容,我们可以换两种思路解决:

思路A:直接匹配最后一个日期格式

写一个精准匹配你日期格式的正则,然后定位到]前面的最后一组:

import re

# 字符串形式的列表
datestr = "['2018-02-15 00:48:14 -0800', '2018-02-15 04:15:00 -0800', '2018-02-15 06:19:09 -0800', '2018-02-15 09:53:55 -0800', '2018-02-15 14:02:52 -0800']"

# 匹配最后一个符合格式的日期
match = re.search(r'(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} [+-]\d{4})']', datestr)

if match:
    last_date = match.group(1)
    print(last_date)
    # 输出结果:2018-02-15 14:02:52 -0800

思路B:先提取所有日期再取最后一个

用re.findall把所有符合格式的日期都提取出来,再用负索引取最后一个,这种方式更灵活,哪怕列表长度变了也能生效:

import re

datestr = "['2018-02-15 00:48:14 -0800', '2018-02-15 04:15:00 -0800', '2018-02-15 06:19:09 -0800', '2018-02-15 09:53:55 -0800', '2018-02-15 14:02:52 -0800']"

# 提取所有日期
all_dates = re.findall(r'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} [+-]\d{4}', datestr)

# 取最后一个
last_date = all_dates[-1]

print(last_date)
# 输出结果:2018-02-15 14:02:52 -0800

总结一下:如果是真正的Python列表,优先用方法1,简单又高效;如果是字符串形式的列表,再考虑正则的方法~

内容的提问来源于stack exchange,提问作者Amez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:41:28