Попробуйте использовать dateutil с fuzzy_with_tokens=True
Пример:
from dateutil.parser import parse
s = "The term starts on Jan 1, 2000 and terminates on"
print(parse(s, fuzzy_with_tokens=True))
Выход:
(datetime.datetime(2000, 1, 1, 0, 0), ('The term starts on ', ' ', ' ', 'and terminates on'))