如何使用正则表达式匹配月年格式数据并实现仅年份补零处理
解决方案
1. 正则适配1/2位月份
你原来的正则\d\-\d\d仅匹配1位数字的月份,把月份的匹配规则改为\d{1,2}即可同时适配1位和2位数字的月份,完整正则可以写为r'^(\d{1,2})-(\d{2})$',首尾的^和$用于限定整个字符串都符合格式,避免部分匹配的异常。
2. 无需split的正则补零方案
可以用正则捕获组直接提取月份和年份,通过re.sub一步完成补零替换,不需要拆分字符串,示例代码如下:
import re # 预编译正则,提升批量处理效率 date_pattern = re.compile(r'^(\d{1,2})-(\d{2})$') # 方法1:直接替换,适合确定输入符合格式的场景 data_example1 = "1-19" cleaned1 = date_pattern.sub(r'\1-00\2', data_example1) print(cleaned1) # 输出:1-0019 data_example2 = "12-21" cleaned2 = date_pattern.sub(r'\1-00\2', data_example2) print(cleaned2) # 输出:12-0021 # 方法2:先校验匹配再处理,适合输入格式不确定的场景 def format_date(raw_date): match_result = date_pattern.match(raw_date) if not match_result: # 格式不匹配时可自定义返回逻辑,这里直接返回原字符串 return raw_date return f"{match_result.group(1)}-00{match_result.group(2)}"
内容的提问来源于stack exchange,提问作者Sai Kumar
相关产品推荐
相关产品推荐

