How To Use Python Regex To Replace Using Captured Group?
Suppose I want to change the blue dog and blue cat wore blue hats to the gray dog and gray cat wore blue hats. With sed I could accomplish this as follows: $ echo 'the blue dog and
Solution 1:
You need to escape your backslash:
p.sub('gray \\1', s)
alternatively you can use a raw string as you already did for the regex:
p.sub(r'gray \1', s)
Solution 2:
As I was looking for a similar answer; but wanting using named groups within the replace, I thought I'd add the code for others:
p = re.compile(r'blue (?P<animal>dog|cat)')
p.sub(r'gray \g<animal>',s)
Solution 3:
Off topic, For numbered capture groups:
#/usr/bin/env pythonimport re
re.sub(
pattern=r'(\d)(\w+)',
repl='word: \\2, digit: \\1',
string='1asdf'
)
word: asdf, digit: 1
Python uses literal backslash, plus one-based-index to do numbered capture group replacements, as shown in this example. So \1
, entered as '\\1'
, references the first capture group (\d)
, and \2
the second captured group.
Solution 4:
Try this:
p.sub('gray \g<1>',s)
Post a Comment for "How To Use Python Regex To Replace Using Captured Group?"