Вы можете использовать
import re
rx = r'\d+(?=:$)'
s="""firefox-x 46.0:
google 5.1.0.1:
- request
- branch"""
print(re.sub(rx, lambda x: str(int(x.group(0)) + 1), s, 1, re.M))
Выход:
firefox-x 46.1:
google 5.1.0.1:
- request
- branch
См. Демоверсию Python
Регулярное выражение \d+(?=:$)
с флагом re.M
будет соответствовать 1+ цифрам, за которыми следуют :
в конце строки и 1
, переданные как count аргумент re.sub
будет выполнять только одну замену.
Часть lambda x: str(int(x.group(0)) + 1)
примет первое совпадение, приведёт 1+ цифр к int, добавит 1
к значению и вернет его обратно к строке.
Для чтения и записи в другой файл:
import re
rx = r'\d+(?=:$)'
with open('branch.txt', 'r') as fr:
data = fr.read()
with open('branch.out.txt', 'w') as fw:
fw.write(re.sub(rx , lambda x: str(int(x.group(0)) + 1), data, 1, re.M))