如何从拼接或带空格的日期字符串中提取指定格式的单个日期
问题排查与解决方案
错误原因
你使用的正则表达式添加了^(字符串起始)和$(字符串结束)锚位,只能匹配完全符合格式的整段字符串,无法从长串中提取多个符合规则的日期子串,因此返回空结果。
可用实现方案
方案1:正则匹配(推荐,兼容带/不带空格的两种输入格式)
直接移除正则的起止锚位,调用re.findall全局匹配所有符合规则的日期段即可:
import re # 测试无空格拼接的输入 input1 = '5Nov20217Dec202110Jan2022' result1 = re.findall(r'\d{1,2}[a-zA-Z]{3}\d{4}', input1) print(result1) # 输出:['5Nov2021', '7Dec2021', '10Jan2022'] # 测试带空格分隔的输入 input2 = '5Nov2021 7Dec2021 10Jan2022' result2 = re.findall(r'\d{1,2}[a-zA-Z]{3}\d{4}', input2) print(result2) # 输出:['5Nov2021', '7Dec2021', '10Jan2022']
方案2:非正则实现(仅适用于所有日期都用空格分隔的输入场景)
如果你的输入统一为空格分隔格式,直接调用字符串拆分方法即可:
input_str = '5Nov2021 7Dec2021 10Jan2022' result = input_str.split() print(result) # 输出:['5Nov2021', '7Dec2021', '10Jan2022']
内容的提问来源于stack exchange,提问作者atr1
相关产品推荐
相关产品推荐

