Обработка обратных ссылок в re.sub, когда замена включает числаPython

Программы на Python
Гость
Обработка обратных ссылок в re.sub, когда замена включает числа

Сообщение Гость »


Возьмем следующую простую замену регулярного выражения:

Код: Выделить всё

import re
s = "Python version is: 3.10"
pat = r'(is:.*)\d+\.\d+$'
version = "3.12"
result = re.sub(pat, rf'\1{version}', s)
print(result)
Это не удается:

Код: Выделить всё

Traceback (most recent call last):
...
raise s.error("invalid group reference %d" % index, pos)
re.error: invalid group reference 13 at position 1
Происходит следующее: необработанная строка интерпретирует обратную ссылку и включает в себя первую цифру «3» строки версии в качестве ссылки.
I' Я пробовал разные варианты:

Код: Выделить всё

re.sub(pat, rf'\1{version}', s)
re.sub(pat, f'\\1{version}', s)
re.sub(pat, r'\1' + version, s)
re.sub(pat, r'\1{0}'.format(version), s)
re.sub(pat, r'\1' + f"{version}", s)
But none will treat the string part as an actual string. Am I stuck using a named capture group for this?


Источник: https://stackoverflow.com/questions/781 ... es-numbers

Вернуться в «Python»