python 用正则表达式获取字符串中的日期

用正则表达式匹配日期
程序运行没有报错,但是没有任何结果输出

请大家帮忙给看一下问题出在哪里,谢谢


import re

dateregex = re.compile(r'''(
    (\d{4}/\d{1,2}/\d{1,2})|
    (\d{4}[\u4e00-\u9fa5]\d{1,2}[\u4e00-\u9fa5]\d{1,2}[\u4e00-\u9fa5])|
    (\d{1,2}[\u4e00-\u9fa5]\d{1,2}[\u4e00-\u9fa5])
    )''',re.VERBOSE)
text = '2022年12月18日 2023年1月5日 2023年1月18日 2022/5/8 2022/12/5 2023/1/18 8月1日 12月25日 1月18日'
groups = dateregex.findall(text)
print(groups)

你的正则表达式中匹配的日期格式有误,如:2022年12月18日 和 2022/5/8 。

你可以把正则表达式中的年月日的格式修改为 (\d{4})年(\d{1,2})月(\d{1,2})日,或者 (\d{4})/(\d{1,2})/(\d{1,2}) 。

还有,你可以使用 re.search() 或 re.finditer() 来查找匹配,而不是 re.findall() 。

img


。。。说出来你可能不信,我跑一遍是正常的哈哈哈
提个建议哈,findall()可以找到所有满足条件的字符没问题,但如果是有规律性的(例如基本的空格分开不同时间)。
可以先text.split(' ') 然后对分割后每一项search(),这样可以剔除结果当中的逗号? 也更符合日常生活中的处理步骤。