前言
做qq空间的网页时间统计可视化,遇到了这个问题
一、待处理字符串
8月19日 01:13
要得到01:03
,去掉8月19日
二、两种代码
1. 有正向前瞻断言、正向先行断言
# 原始字符串
original_str = "这是一个包含日期的字符串,例如2023年8月22日,需要被去除。"
# 正则表达式匹配模式,匹配形如数字月数字日的内容
# \d+ 表示匹配一个或多个数字
# 支持1位或2位数字的月和日,例如 "1月", "01月", "12月", "31日" 等
date_pattern = r'(?<=\D)(\d{1,2}月\d{1,2}日)(?=\D)'
# 使用正则表达式替换掉匹配的日期模式
no_date_str = re.sub(date_pattern, '', original_str)
(\d{1,2}月\d{1,2}日)
代表x月x日
,其中\d{1,2}代表1到2位的数字(digit).
(?<=\D)
是正向前瞻断言。\D
与\d
对应,代表非数字。(?<=\D)
代表x月x日
前面有数个非数字内容。
(?=\D)
是正向先行断言,代表x月x日
后面有数个非数字内容。
这样的代码得到的结果为
8月19日 01:13
不能正确去掉字符串
2.无断言,直接去掉日期
# 原始字符串
original_str = "这是一个包含日期的字符串,例如2023年8月22日,需要被去除。"
# 正则表达式匹配模式,匹配形如数字月数字日的内容
# \d+ 表示匹配一个或多个数字
# 支持1位或2位数字的月和日,例如 "1月", "01月", "12月", "31日" 等
date_pattern = r'(\d{1,2}月\d{1,2}日)'
# 使用正则表达式替换掉匹配的日期模式
no_date_str = re.sub(date_pattern, '', original_str)
代码不限制x月x日
前后的内容,得到
01:13
加上
no_date_str = no_date_str.replace(' ', '').replace('昨天', '')
得到
01:13
成功
总结
没时间系统学习re,pick up 一点 re 表达式