Regex, чтобы определить годы с недавнего времени до 2018 года - PullRequest
0 голосов
/ 03 января 2019

Я использую следующий код для определения лет в моем тексте.

import re
match = re.match(r'.*([1-2][0-9]{3})', text)
print(match.group(1))

Однако, это также допускает такие годы, как 2999, 2078, которые все еще недействительны.

Следовательно,Я хотел бы знать, как определить годы до недавнего времени в Python (то есть до 2018 года).

Ответы [ 4 ]

0 голосов
/ 03 января 2019

чистое регулярное выражение

(\d{1,3})|(1\d{3})|(201[0-8])|(200\d)
0 голосов
/ 03 января 2019

Вариант 1: перечислите их один за другим:

r = re.compile(r"(?!\d)(?:1[0-9]{3}|20[01][0-9])(?!\d)")
match = r.search(text)

Это даст вам годы от 1000 до 2019


Вариант 2: Извлеките число, преобразуйте вint и сравните.

match = re.match(r'.*([1-2][0-9]{3})', text)
year = int(match.group(0))
if 1000 <= year <= 2019:
    do_your_stuff()

Вы можете получить текущий год программно:

from datetime import datetime

year = datetime.now().year
0 голосов
/ 03 января 2019

Вы можете передать сопоставленную строку в приведенный ниже код, сравнить сопоставленный год с текущим годом и вернуть True, если сопоставляемый год равен или меньше текущего года.

from datetime import datetime

matched_string = "2020"
past = datetime.strptime(matched_string, "%Y")
present = datetime.now()

print(past.date() < present.date())
0 голосов
/ 03 января 2019

Я бы попытался привести данное значение к целому числу и проверить, больше ли оно, например, 1900 и меньше, или равно 2018/2019

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...