pattern = r"(\d{4}-\d{2}-\d{2}|\d{4}年\d{1,2}月\d{1,2}日|\d{4}\d{2}\d{2}|\d{1,2}.\d{1,2}|\d{1,2}月\d{1,2}日)"
text="7月13日adjfhddj"
result = re.findall(pattern, text)
print(result)
识别结果是:7月13,那个日字没带出来,如果这个字符串中日期格式是2023-07-13或者2023年7月13日或者20230713或者7.13,识别结果都是对的,能怎么写这个正则,可以这些格式的日期或者更多格式的日期都能从字符串中准确识别出来?
pattern = r"(\d{4}-\d{2}-\d{2}|\d{4}年\d{1,2}月\d{1,2}日|\d{4}\d{2}\d{2}|\d{1,2}月\d{1,2}日|\d{1,2}.\d{1,2})"
text="7月13日adjfhddj"
result = re.findall(pattern, text)
print(result)
把pattern改成上边那样就没问题了
这个就需要考虑到各种日期写法了。
比如发现‘月’这个字,就往前提取1--2位,再往后知道发现日字,提取出xx月xx日的格式
当有斜杠时‘/’更需注意该日期是否合法等等
可以加一些if来判断一下
程序分析:首先以小欧生日2002年12月1日为标准,统一将月、日化为以年为单位,月除以12,日除以365(二者都需整除,否则年龄带小数点),最后三者相加即可得出年龄。
思路解析:可将小欧生日2002年12月1日设为定量,再将用户输入的生日将年月日替代,再将其分割一列表现形式输出,便可利用列表下标与小欧生日的定量进行运算,得出年龄。
代码解析:
x = 2002
y = 12
z = 1
a = str(input('请输入时间:'))
b = a.replace('年', ',')
c = b.replace('月', ',')
d = c.replace('日', '')
list1 = d.split(',')
j = int(list1[0]) - x
k = (int(list1[1]) - y) // 12
l = (int(list1[2]) - z) // 365
print("age为:", (j+k+l))