如何用Python正则表达式查找文本中所有「1401/07/29 19:00:00」格式内容
使用Python的re.findall查找特定日期时间格式的内容
要匹配「1401/07/29 19:00:00」这种格式的时间字符串,你可以构造对应的正则表达式,结合re.findall()方法批量提取目标内容。
基础匹配方案
如果仅需匹配格式(不校验日期时间的合法性,比如月份是否为1-12),可以用以下代码:
import re # 示例文本 sample_text = "日志内容:1401/07/29 19:00:00 系统启动,1401/07/30 08:30:15 完成备份,1502/12/31 23:59:59 执行年度任务" # 定义正则模式 time_pattern = r'\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}' # 提取所有匹配的时间字符串 matched_times = re.findall(time_pattern, sample_text) print(matched_times) # 输出:['1401/07/29 19:00:00', '1401/07/30 08:30:15', '1502/12/31 23:59:59']
正则模式各部分说明:
\d{4}:匹配4位数字(对应年份)\/:匹配字面斜杠(正则中/是特殊符号,需转义)\d{2}:匹配两位数字(依次对应月份、日期、小时、分钟、秒):匹配日期与时间之间的空格::匹配字面冒号
严格校验的匹配方案
如果需要确保提取的日期时间合法(比如月份01-12、日期01-31、小时00-23、分钟/秒00-59),可以使用带非捕获组的正则:
import re sample_text = "包含无效时间的文本:1401/13/32 25:61:62,有效时间:1401/07/29 19:00:00、1502/12/31 23:59:59" # 严格匹配的正则模式(使用非捕获组(?:...)避免返回分组内容) strict_time_pattern = r'\d{4}/(?:0[1-9]|1[0-2])/(?:0[1-9]|[12]\d|3[01]) (?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d' strict_matched_times = re.findall(strict_time_pattern, sample_text) print(strict_matched_times) # 输出:['1401/07/29 19:00:00', '1502/12/31 23:59:59']
这个模式会自动过滤格式错误的时间字符串,只保留合法结果。
内容的提问来源于stack exchange,提问作者Mohammadreza Taheri
相关产品推荐
相关产品推荐

