python - 如何删除像 July 1, 2019 这样的字符串

标签 python regex date datetime

我有一个大字符串,我想从中删除所有日期字符串子字符串。根据约束,日期字符串都遵循以下格式:

月字符串日、年(例如:2018 年 9 月 1 日)

假设我的字符串是:

bad_s = "天气很好。2018 年 9 月 1 日,2017 年 8 月 2 日我笑得很开心"

我要回去 good_s = "天气很好。我笑得很开心"

在 Python 中有没有简单的方法来做到这一点?

这是我尝试过的:

reg_ex = """/[\'January\'\,\ \'February\'\,\ \'March\'\,\ \'April\'\,\ \'May\'\,\ \'June\'\,\ \'July\'\,\ \'August\'\,\ \'September\'\,\ \'October\'\,\ \'November\'\,\ \'December\'](?:\^\(\[1\-9\]\|\[12\]\\d\|3\[0\-q\]\)\$)/"""
replaced = re.sub(reg_ex, bad_s, "")

但是,这并不能取代我想要的。我最终还是得到了 bad_s

编辑:如果它让任何人都更容易,这里有一个 12 个月的列表,所以你不必写它们: months = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月']

最佳答案

像这样?

(january|february|march|april|may|june|july|august|september|octorber|november|december) ([1-9]|[1-2]\d|3[01]), \d{4}

只是不要忘记 /i 标志或任何 Python 等价物。

请注意,这不关心一个月有多少天,所以 2017 年 2 月 31 日 将匹配,它也不关心闰年。此正则表达式是匹配器而不是验证器。

如果您希望它更通用并完全忽略日期验证,那么这会起作用:

(january|february|march|april|may|june|july|august|september|octorber|november|december) \d+, \d+

https://regex101.com/r/zVbb0v/5

关于python - 如何删除像 July 1, 2019 这样的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57483608/

相关文章:

python - 如何在 Python 中指示无效参数?

python - 发出请求时无法维护 session header 的顺序

regex - 使用正则表达式进行密码查询

java - 如何在java中用 "XXXXX"替换字符串值?

php - 为什么我的 MySQL Group By Hours vs Half Hours 文件不显示相同的数据?

python - youtube数据api将哪些分类为无效关键字?

python - 运行脚本 : "ImportError: Missing required dependencies [' numpy']"时出错

python - 正则表达式提取完整捕获组

java - 使用 java.util.Date 输入的 Postgres 上的时间戳超出范围错误

ios - Swift:比较/拆分两个日期数组[Date]后,如何创建日期数组[[Date]]的数组