Как в функции Python re.sub я могу ссылаться на группу 0, используя синтаксис \ n? - PullRequest
1 голос
/ 29 апреля 2019

В параметре замены Python re.sub() я хочу сослаться на всю совпавшую строку, группу 0. Однако она не работает должным образом.

>>> re.sub(r"(\d)\1", r"\0\1", "aa11bb22cc33")
'aa\x001bb\x002cc\x003'

Обратите внимание, что \1 правильно относится к группе 1. Я должен использовать синтаксис \g<n> для ссылки на группу 0.

>>> re.sub(r"(\d)\1", r"\g<0>\1", "aa11bb22cc33")
'aa111bb222cc333'

Я хочу знать, возможно ли использовать синтаксис \n для ссылки на группу 0в параметре замены?

1 Ответ

2 голосов
/ 29 апреля 2019

Это не так.Однако вы можете поместить группу захвата вокруг всего выражения и сослаться на нее с помощью \1, а внутреннюю группу - с помощью \2.

>>> re.sub(r"((\d)\2)", r"\1\2", "aa11bb22cc33")
>>> 'aa111bb222cc333'
.
...