どすえのブログ

ソフトウェア開発ブログ

Python 正規表現の抽出部分で置き換える

正規表現を使ってタグを除去したいときありませんか。 具体的には、これを

(地名: 東京都)と(地名: 埼玉県)は隣接しています。

こうしたい。

東京都と埼玉県は隣接しています。

正規表現でタグの中身を抽出して、再度タグを正規表現で捕捉し、抽出内容で置き換えました。以下コード。

import re

text = "(地名: 東京都)と(地名: 埼玉県)は隣接しています。"

targets = re.findall("\(地名:\s(.+?)\)", text)
for target in targets:
    text = re.sub("\(地名:\s.+?\)", target, text, count=1)

count=1を指定することで、最大置換回数を1回に制限しているところがポイントです。