我有一个从字符串中提取日期的正则表达式。但它没有考虑到没有30吨的二月,例如。如何使用Python来验证提取的日期,而不让正则表达式变得更复杂?
这是我的正则表达式:^(?:(1[0-2]|0?[1-9])(\,|\.|\/)(3[01]|[12][0-9]|0?[1-9])|(3[01]|[12][0-9]|0?[1-9])(\,|\.|\/)(1[0-2]|0?[1-9]))(\,|\.|\/)(?:[0-9]{2})?[0-9]{2}$
要测试(DD{分离器}MM{分离器}(YY)YY格式)的示例:
发布于 2022-08-08 12:13:14
在显示的示例中,请尝试使用Python3编写和测试的regex。我在这里使用过re Python3库。然后在其中使用findall函数并启用re.M(多行)标志。以下是上述正则表达式的在线演示。
import re
var="""
01.12.21
31.3.22
12.12.
31/12/22
28.02.2021
29,02,2020
30.02.2003
29.02
9912/12/200199
test02-06-13
"""
re.findall(r'^((?:0[0-9]|1[0-9]|2[0-9]|3[0-1])(?:\.|\/|,)(?:0?[0-9]|1[0-2])(?:\.|\/|,)(?:[0-9]{2,4}))$',var,re.M)
['01.12.21', '31.3.22', '31/12/22', '28.02.2021', '29,02,2020', '30.02.2003']这里要提到的一件重要事情是,这个正则表达式只使用显示的示例创建和测试(稍后将进行更多的测试),而且对于年度检查,它只检查2到4位数的范围,以防您想要检查或比较特定的范围,那么我们需要在这个示例中进行调整。
https://stackoverflow.com/questions/73277480
复制相似问题