Вы можете найти 1998 и использовать lookarounds с re.sub , чтобы утверждать, что происходит непосредственно перед (?<!\S)
и после (?!\S)
не является \S
непробельным символом.
В замене используйте 1999
(?<!\S)1998(?!\S)
Строка в вашем коде может выглядеть следующим образом:
s = re.sub(r"(?<!\S)1998(?!\S)", "1999", s)
Regex demo | Python demo
Пример
import re
regex = r"(?<!\S)1998(?!\S)"
test_str = ("this is 1998\n"
"1998.csv 1998.png, 1998.xlsx")
result = re.sub(regex, "1999", test_str)
if result:
print (result)
Результат
this is 1999
1998.csv 1998.png, 1998.xlsx 1999
Другой вариант, если последующее не может быть только точкой, - использовать отрицательный прогноз и начать 1998 с границы слова:
\b1998(?!\.)