python - 月日的正则表达式,分隔符位于错误一侧

标签 python regex python-re

我有这个代码:

import re
x = "John Doe, Aug 5 2020 Hello Jane Doe: Aug 5 2020"
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
rx = re.compile(fr"\s+(?=(?:{'|'.join(months)})\b)", re.I)
print(rx.split(x))

输出如下:

['John Doe,', 'Aug 5 2020 Hello Jane Doe:', 'Aug 5 2020']

我希望它输出:

["John Doe, Aug 5 2020", "Hello Jane Doe: Aug 5 2020"]

我怎样才能做到这一点?预先感谢您的所有帮助!

最佳答案

您可以使用以下方法使用 findall 而不是 split:

>>> rx = re.compile(fr"\b\S.*?(?:{'|'.join(months)})" + r"\s+\d{1,2}\s+\d{4}", re.I)
>>> print(rx.findall(x))
['John Doe, Aug 5 2020', 'Hello Jane Doe: Aug 5 2020']

在这个正则表达式中,我们从单词边界和非空白字符开始匹配,并匹配任何内容,直到找到这个日期字符串,该字符串是月份的交替,后跟日期和年份部分。

RegEx Demo

关于python - 月日的正则表达式,分隔符位于错误一侧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68120895/

相关文章:

javascript - 将包含 ' , 的字符串更改为 TitleCase

php - 字符串中十进制数字的正则表达式

python - 如何在 python 中使用正则表达式捕获带有千位和小数分隔符的价格

python - Python –没有错误但也没有返回数据

python - 如何计算 Pandas 滚动窗口的累积乘积?

java - 正则表达式获取 URL 的最后部分

python re如何在特定单词后留出空间?

python - 可以重新忽略惰性量词吗?

python - 在wxPython中切换帧时wx._core.PyDeadObjectError?

python - “NoneType”对象没有属性 'config'