Regex to identify years from recent up to 2018
我使用以下代码来标识文本中的年份。
1 2 3 | import re match = re.match(r'.*([1-2][0-9]{3})', text) print(match.group(1)) |
但是,这也接受诸如29992078年等仍然无效的年份。
因此,我想知道如何在python中识别最近几年(即到2018年)。
选项1:逐一列出:
1 2 | r = re.compile(r"(?!\d)(?:1[0-9]{3}|20[01][0-9])(?!\d)") match = r.search(text) |
这将给你1000到2019年的时间
选项2:提取数字,转换为
1 2 3 4 | match = re.match(r'.*([1-2][0-9]{3})', text) year = int(match.group(0)) if 1000 <= year <= 2019: do_your_stuff() |
您可以通过编程方式获取当前年份:
1 2 3 | from datetime import datetime year = datetime.now().year |
您可以将匹配字符串传递给下面的代码,并将匹配的年份与当前年份进行比较,如果匹配的年份等于或小于当前年份,则返回
1 2 3 4 5 6 7 | from datetime import datetime matched_string ="2020" past = datetime.strptime(matched_string,"%Y") present = datetime.now() print(past.date() < present.date()) |
我试着把给定的值转换成一个整数,并检查它是否大于1900和smaller或等于2018/2019。
纯正则表达式
1 | (\d{1,3})|(1\d{3})|(201[0-8])|(200\d) |