1. ホーム
  2. python

python regex を使ってキャプチャしたグループを使って置換する方法は?[重複している]。

2023-08-13 04:49:19

質問

を変更したいとします。 the blue dog and blue cat wore blue hatsthe gray dog and gray cat wore blue hats .

とは sed 以下のように実現できました。

$ echo 'the blue dog and blue cat wore blue hats' | sed 's/blue \(dog\|cat\)/gray \1/g'

Pythonで同様の置換を行うにはどうしたらよいでしょうか。私は試してみました。

>>> import re
>>> s = "the blue dog and blue cat wore blue hats"
>>> p = re.compile(r"blue (dog|cat)")
>>> p.sub('gray \1',s)
'the gray \x01 and gray \x01 wore blue hats'

どのように解決するのですか?

バックスラッシュをエスケープする必要があります。

p.sub('gray \\1', s)

あるいは、正規表現ですでに行ったように、生の文字列を使用することができます。

p.sub(r'gray \1', s)