У меня есть строка, содержащая цифру, которую я хочу заменить другой, и оставшаяся часть строки сохраняется.
Например,
original = VAR token 3
ified = VAR token 1 // orig = 3
token
может быть любой строкой, оператор всегда начинается с VAR
и содержит пробел между token
и его значением.
Я используюэта функция и регулярное выражение
import re
def modify(line, token, new_value):
newline = re.sub(r'(^(\s*VAR\s*%s\s+)(\d+)(.*)' % token, r'\1%s // orig = \2\3' % new_value, line)
print(newline)
Я получаю сообщение об ошибке при запуске этого кода с
modify("VAR T 3", "T", "1")
Traceback (most recent call last):
File "/usr/local/python/3.4.3_wTclTk/lib/python3.4/sre_parse.py", line 866, in expand_template
literals[index] = s = g(group)
IndexError: no such group
<Stack Trace>
sre_constants.error: invalid group reference
Я предполагаю, что это потому, что строка замены на самом деле становится r'\11 // orig = \2\3'
, и нетgroup 11
.
Как определить буквенную цифру отдельно от идентификатора группы в строке замены?