若从众多文本中筛选出DD/MM/YYYY格式的日期,并且要求4月、6月、9月、11月的天数不超30天,2月份在闰年不超29天,非闰年不超28天。此外还要求天和月为单数,要在前面加个0(如1,变为01)。代码如下:
import re
#(?<!\d)和(?!\d)是为了防止出现类如111/12/20005的情况
yearRegex=re.compile(r'(?<!\d)(0?[1-9]|[12][0-9]|30|31)/(0?[1-9]|1[0-2])/([12]\d{3})(?!\d)')
text="1/12/2019,01/12/2018,23/09/2016,29/2/2000"
year=yearRegex.findall(text)
a=[]
for groups in year:
#把4月、6月、9月、11月超过30天的去除掉
if (groups[1]==("4") or groups[1]==("6") or groups[1]==("9") or groups[1]==("11")