【问题标题】:matching of dates using regex pattern使用正则表达式匹配日期
【发布时间】:2021-09-06 05:17:48
【问题描述】:

我试图使用正则表达式模式匹配日期模式 25.8.2020。我使用 [\d]{1,2}.[\d]{1,2}.[\d]{4} 来匹配这个。但问题是,如果有一些序列,如 454.9451、2021-2022 等,它们也会得到匹配。我如何编写一个正则表达式模式来完全匹配 dd.mm.yyyy 格式

【问题讨论】:

    标签: python-3.x regex


    【解决方案1】:

    我建议使用strptime 以您预期的格式验证日期字符串:

    def validate(date_text):
        try:
            datetime.datetime.strptime(date_text, '%d.%m.%Y')
        except ValueError:
            raise ValueError("invalid date string " + date_text)
    
    inp = ['25.8.2020', '2020-12-31']
    for i in inp:
        validate(i)
    

    打印出来:

    ValueError: 无效的日期字符串 2020-12-31

    与纯正则表达式相比,使用strptime 的潜在优势是后者也可能接受与模式匹配但日期无效的字符串。例如,\d{2}\.\d{2}\.\d{4} 模式本身将允许诸如 30.02.2021 之类的日期,但实际上并不存在。

    【讨论】:

      【解决方案2】:

      试试这个:[0-3]*\d\.[01]*\d\.\d{4} 使用\. 代替.

      示例:regex101

      【讨论】:

        猜你喜欢
        • 2011-08-24
        • 2012-04-16
        • 2012-04-16
        • 2011-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多