python re.sub group: number after \number
numbers, python, regex, regex-group
Solution
The answer is:
re.sub(r'(foo)', r'\g<1>123', 'foobar')
Relevant excerpt from the docs:
In addition to character escapes and backreferences as described above, `\g<name>` will use the substring matched by the group named `name`, as defined by the `(?P<name>...)` syntax. `\g<number>` uses the corresponding group number; `\g<2>` is therefore equivalent to `\2`, but isn’t ambiguous in a replacement such as `\g<2>0`. `\20` would be interpreted as a reference to group 20, not a reference to group 2 followed by the literal character `'0'`. The backreference `\g<0>` substitutes in the entire substring matched by the RE.
Problem
How can I replace `foobar` with `foo123bar`? This doesn't work: ``` >>> re.sub(r'(foo)', r'\1123', 'foobar') 'J3bar' ``` This works: ``` >>> re.sub(r'(foo)', r'\1hi', 'foobar') 'foohibar' ```