Числовое значение непосредственно после обратной ссылки

Я пытаюсь использовать re.sub для строки с числовым значением непосредственно после числовой re.sub . То есть, если мое значение замены составляет 15.00 а мой backreference равен \1 , моя строка замены будет выглядеть так:

\115.00 , который, как ожидается, вызовет error: invalid group reference потому что думает, что моя группа backreference – 115 .

Пример:

 import re r = re.compile("(Value:)([-+]?[0-9]*\.?[0-9]+)") to_replace = "Value:0.99" # Want Value:1.00 # Won't work: print re.sub(r, r'\11.00', to_replace) # Will work, but don't want the space print re.sub(r, r'\1 1.00', to_replace) 

Есть ли решение, которое не включает в себя больше, чем re.sub ?

One Solution collect form web for “Числовое значение непосредственно после обратной ссылки”

Используйте однозначный синтаксис обратной ссылки \g<1> . См. re.sub :

\g<number> использует соответствующий номер группы; \g<2> , следовательно, эквивалентно \2 , но не является неоднозначным в замене, например \g<2>0 . \20 будет интерпретироваться как ссылка на группу 20 , а не на ссылку на группу 2, за которой следует буквальный символ «0».

См. Эту демо-версию regex .

Демо-версия Python :

 import re r = re.compile("(Value:)([-+]?[0-9]*\.?[0-9]+)") to_replace = "Value:0.99" # Want Value:1.00 print(re.sub(r, r'\g<1>1.00', to_replace)) # => Value:1.00 
  • Изменение регулярного выражения Python
  • Разбор регулярного выражения Python
  • Ошибка соответствия RE в python, путайте результат с regex101
  • Python Regex, чтобы найти строку в двойных кавычках внутри строки
  • Как разделять запятыми, которые не находятся в круглых скобках?
  • как удалить '\ xe2' из списка
  • Несбалансированная скобка python
  • Python Regex - заменить строку, не расположенную между двумя конкретными словами
  • Python - лучший язык программирования в мире.