Вы можете использовать положительный вид сзади нулевой ширины ((?<=\b\d{4})
), чтобы убедиться, что .
, который вы хотите заменить, предшествует четыре цифры:
In [1820]: str_ = 'ABCD 2009. DEF'
In [1821]: re.sub(r'(?<=\b\d{4})\.', '', str_)
Out[1821]: 'ABCD 2009 DEF'
In [1822]: str_ = 'ABCD 2009. DEF 2019. FOO'
In [1823]: re.sub(r'(?<=\b\d{4})\.', '', str_)
Out[1823]: 'ABCD 2009 DEF 2019 FOO'