Python 2.7正则匹配替换日期格式问题求助
Python 2.7 匹配并替换日期格式子串解决方案
没问题,我来帮你搞定这个需求!你遇到的单词边界(\b)失效的问题,其实是因为de/del前后都是数字(属于正则里的\w字符),而\b仅在单词字符(字母、数字、下划线)和非单词字符之间,或者字符串首尾才会生效,所以数字和de之间并没有单词边界,自然匹配不到。
针对你的需求,我们可以直接通过正则分组来精准匹配目标结构,然后替换掉中间的de/del:
具体实现代码
import re # 示例文本 original_text = "今天是12de2024,明天是13del2025,还有05de1999的记录" # 正则匹配:捕获两位数字日份、中间的de/del、四位数字年份 pattern = r'(\d{2})(de|del)(\d{4})' # 替换为 日份 + 年份,移除中间的de/del processed_text = re.sub(pattern, r'\1\3', original_text) print(processed_text)
代码说明
- 正则表达式
r'(\d{2})(de|del)(\d{4})':(\d{2}):捕获两位数字的日份,作为第一个分组(\1)(de|del):精确匹配de或del,作为第二个分组(替换时会丢弃)(\d{4}):捕获四位数字的年份,作为第三个分组(\3)
re.sub()函数会把所有匹配到的子串替换为\1\3,也就是直接拼接日份和年份。
扩展说明
如果你的文本中de/del前后有空格(比如12 de 2024),只需要调整正则表达式为:
pattern = r'(\d{2})\s+(de|del)\s+(\d{4})'
这里的\s+用来匹配一个或多个空格,确保能正确捕获带空格的情况。
内容的提问来源于stack exchange,提问作者jagannathanr
相关产品推荐
相关产品推荐

