【Python】replaceメソッドで正規表現を使う方法

【Python】replaceメソッドで正規表現を使う方法

公開: 更新:


Pythonのreplaceメソッドで正規表現を使う方法

Python正規表現を用いて文字列を置換する場合、reモジュールsub()関数を使用します。sub()関数を使用することによって、複雑なパターンマッチングと置換が可能になります。正規表現を使用することによって、単純な文字列置換では難しい柔軟な文字列操作の実現が可能です。

re.sub()関数は第1引数にパターン、第2引数に置換する文字列、第3引数に対象の文字列を指定します。正規表現にマッチする全ての箇所を一度に置換することができるため、非常に便利な関数の一つです。

【サンプルコード】
import re

text = "The price is $100 and €50."
pattern = r'\$(\d+)'  # ドル記号とそれに続く数字にマッチする正規表現
replacement = r'¥\1'  # ¥記号とマッチした数字に置換
result = re.sub(pattern, replacement, text)
print(result)
【実行結果】
The price is ¥100 and €50.

上記のサンプルコードでは、ドル記号とそれに続く数字を円記号と同じ数字に置換しています。\1は正規表現の中で括弧でグループ化された部分(ここでは数字)を参照するための特殊な記法です。正規表現を使用することによって、特定のパターンに一致する部分のみを選択的に置換することができます。

re.sub()関数はマッチした部分を新しい文字列で置換します。数字だけではなく特定の文字列を検知して、別の文字列に置換することも可能です。

「Python」を学べるコードキャンプのサービス

正規表現を使った複数パターンの置換方法

複数パターンを同時に置換する場合、辞書と関数を組み合わせることで効率的に処理できます。この方法では置換パターンを辞書として定義し、re.sub()関数の第2引数に関数を指定します。関数内で辞書を参照することによって、マッチしたパターンに応じた置換を行うことが可能です。

この手法を使用することによって、コードの可読性を保ちながら複雑な置換ルールを実装できます。また、置換ルールの追加や変更が容易になるため、メンテナンス性の高いコードを作成できます。

【サンプルコード】
import re

text = "Apple costs $1, Banana costs $2, and Orange costs $3."
patterns = {
    r'\$1': '¥100',
    r'\$2': '¥200',
    r'\$3': '¥300'
}

def replace_currency(match):
    return patterns[match.group(0)]

result = re.sub('|'.join(patterns.keys()), replace_currency, text)
print(result)
【実行結果】
Apple costs ¥100, Banana costs ¥200, and Orange costs ¥300.

上記のサンプルコードでは、複数の通貨表記を同時に置換しており、patterns辞書にパターンと置換文字列のペアを定義して、replace_currency関数内でマッチしたパターンに対応する置換を行っています。'|'.join(patterns.keys())によって、全てのパターンを選択的に一致させる正規表現を生成しています。

正規表現を使った条件付き置換の実装方法

正規表現を使用することによって、特定の条件を満たす場合のみ置換を行う高度な処理が可能になります。この手法では正規表現の先読みアサーションや後読みアサーションを活用します。これらの機能を使用することによって、置換対象の前後の文脈を考慮した柔軟な置換処理の実現が可能です。

条件付き置換を実装する際は、正規表現のパターンを慎重に設計する必要があります。複雑な条件を正規表現で表現することによって、Pythonのコード内でのif文の使用を減らし、より簡潔で効率的な置換処理を行えます。

【サンプルコード】
import re

text = "red apple, green apple, red banana, yellow banana"
pattern = r'(red|green) (?=apple)'  # appleの前のredまたはgreenにマッチ
replacement = 'delicious'
result = re.sub(pattern, replacement, text)
print(result)
【実行結果】
delicious apple, delicious apple, red banana, yellow banana

上記のサンプルコードでは「red」または「green」という色の形容詞が「apple」の前にある場合のみ、その形容詞を「delicious」に置換しています。(?=apple)は先読みアサーションで「apple」という単語が後に続く場合のみマッチします。この正規表現を使用することによって、「banana」の前の色の形容詞は置換されずに残ります。

先読みアサーションや後読みアサーションを使うことで、より複雑な条件での置換を実装することが可能ですので、覚えておくことをおすすめします。

※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。

ITやプログラミングに関するコラム


ITやプログラミングに関するニュース

ブログに戻る

コメントを残す

コメントは公開前に承認される必要があることにご注意ください。

コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア 金融業界の業務効率化を加速するニッセイアセットマネジメントの生成AI×GAS活用研修事例 - IT・プログラミングを知って学べるコネクトメディア 【製造業のDX人材育成事例】デジタル人材の即戦力化を実現する、日本ガイシ株式会社の異動者向オンボーディング研修 - ITやプログラミングを知って学べるコネクトメディア フューチャーアーキテクト株式会社が実現した新入社員向けIT研修プログラムでタスクフォース制度が主体的な学びと成長を生み出す - IT・プログラミングを知って学べるコネクトメディア コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【IT新入社員研修】オンラインとオフラインの最適バランスを実現したFutureOneの導入事例 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【新入社員研修】柔軟なハイブリッド型Java研修で実現した新卒20名の成長と成果|サークレイス株式会社 - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/現場により近いところにデジタルを根付かせるDX基礎講座研修|株式会社ブリヂストン - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/業務の効率化・DX推進に向けたIT人材育成への第一歩|株式会社カナエ - ITやプログラミングを知って学べるコネクトメディア 企業・法人向けのIT・プログラミング研修 - ITやプログラミングを知って学べるコネクトメディア

新着記事

対象者別で探す

子供(小学生・中学生・高校生)向け
プログラミング教室検索する

子供(小学生・中学生・高校生)がロボットやプログラミング言語を学ぶことができるオフラインからオンラインスクールを検索、比較することが可能です。

子供(小学生・中学生・高校生)
プログラミング教室検索する

ITやプログラムなどの
最新情報を検索する

日々、新しいITやプログラミング言語の情報が流れていきますが、特定の情報を時系列でニュースやコラムを確認することができます。

ITやプログラムなどの
最新情報を検索する