Pythonでは、正規表現を使用することで、テキスト操作が非常に柔軟かつ効率的に行えます。
特に置換処理は、データのクリーニングや形式変更に欠かせない手法です。
この記事では、Pythonの標準ライブラリであるreモジュールを使用して、文字列のパターンマッチングと置換を行う方法を詳しく解説します。
基本から応用まで、様々な例を通じて学んでいきましょう。
- 未経験者向けプログラミングスクール
- 現役エンジニアがしっかりサポート
- 卒業後も安心の転職・副業サポート
Pythonでの正規表現置換の基本

Pythonで正規表現を使って文字列を置換する場合、主にre.sub()関数を使用します。
この関数を使うことで、パターンに一致した部分を新しい文字列に簡単に置換できます。
例えば、文字列内のスペースをアンダースコアに置換する方法は以下の通りです。
import re
text = "Python で 正規表現 を 使用"
result = re.sub(r' ', '_', text)
print(result)
このコードを実行すると、スペースがアンダースコアに置換され、「Python_で_正規表現_を_使用」という結果が得られます。
基本的な置換操作
基本的な置換操作では、シンプルなパターンを指定してテキスト内の部分を置換します。
例えば、「a」を「A」に置換したい場合、以下のようにコードを記述します。
result = re.sub(r'a', 'A', 'apple and banana')
print(result)
このコードでは、”apple and banana” が “Apple And bAnAnA” に置換されます。
置換回数の指定
正規表現の置換操作では、置換回数を指定することも可能です。
例えば、最初の1回のみ置換を実行したい場合は、以下のように記述します。
result = re.sub(r' ', '_', text, count=1)
このコードでは、最初のスペースのみがアンダースコアに置換されます。
パターンマッチを使用した複雑な置換
正規表現を使用すると、パターンに基づいてより複雑な置換が可能です。
例えば、次のコードは電話番号のフォーマットを変更します。
text = "電話番号: 080-1234-5678"
result = re.sub(r'(\d{3})-(\d{4})-(\d{4})', r'(\1) \2-\3', text)
print(result)
このコードを実行すると、「電話番号: (080) 1234-5678」とフォーマットが変更されます。
- 現役エンジニアからスキルを学べる
- 満足度は驚異の97.4%
- 300社以上のIT企業で研修に導入
- 毎日9時〜21時まで、無料カウンセリングを開催中!
re.sub()関数の仕組みと詳細

Pythonのre.sub()関数は、文字列をパターンに基づいて置換するための基本的な方法です。
この関数を使うと、指定したパターンに一致する文字列を簡単に他の文字列に変えることができます。
基本的な使い方は以下の通りです。
基本的なre.sub()の使い方
基本的な使い方は非常にシンプルで、例えば次のコードではスペースをハイフンに置換します。
import re
pattern = r'\s+'
replacement = '-'
text = "Python 正規 表現 置換"
result = re.sub(pattern, replacement, text)
print(result)
この結果、”Python-正規-表現-置換” という文字列が生成されます。
グループキャプチャを使用した置換
正規表現のパターン内で、グループキャプチャを使うと、特定の部分を再利用して置換が可能です。
例えば、日付フォーマットを変更する場合、次のように書きます。
text = "2024/09/20"
result = re.sub(r'(\d{4})/(\d{2})/(\d{2})', r'\2-\3-\1', text)
print(result)
結果は「09-20-2024」となり、日付フォーマットが変換されます。
コンパイル済み正規表現での置換
正規表現を何度も使用する場合は、re.compile()を使って正規表現を事前にコンパイルすることで、処理の効率を上げることができます。
pattern = re.compile(r'\d+')
text = "Order number 12345"
result = pattern.sub('XXXX', text)
print(result)
この結果は、「Order number XXXX」となり、数字が置換されます。
Pythonの正規表現モジュールの基本的な機能

Pythonには、強力なテキスト操作のための正規表現ライブラリであるreモジュールが標準で用意されています。
正規表現を活用することで、テキストのパターンマッチング、抽出、置換などが可能になります。
ここでは、reモジュールの基本的な使い方を見ていきましょう。
正規表現の基本構文
正規表現の基本は、特定のパターンに一致する文字列を見つけることです。
例えば、次のコードはメールアドレスのパターンに一致する文字列を検出します。
pattern = r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'
text = "test@example.com"
result = re.search(pattern, text)
print(result.group())
この結果、「test@example.com」が抽出されます。
パターンマッチングの応用
正規表現では、数値や特定の文字列を抽出することも簡単に行えます。
例えば、電話番号を抽出するコードは以下の通りです。
pattern = r'\d{2,4}-\d{2,4}-\d{4}'
text = "私の電話番号は080-1234-5678です"
result = re.search(pattern, text)
print(result.group())
結果は「080-1234-5678」となります。
メタ文字とエスケープ文字の使用
正規表現には、特定の意味を持つメタ文字があり、パターンマッチングにおいて重要な役割を果たします。
例えば、ピリオド「.」は任意の1文字を意味しますが、文字通りのピリオドとして使いたい場合はバックスラッシュ「\」でエスケープします。
pattern = r'\.'
text = "www.example.com"
result = re.sub(pattern, '[dot]', text)
print(result)
この結果、「www[dot]example[dot]com」となります。
プログラミングスクール受講時には教育訓練給付制度を利用することで、受講料の最大80%の給付を受けることが可能です。
応用的な正規表現の使用方法

正規表現を活用したテキスト操作は、基本的な置換やパターンマッチだけではありません。
より高度なテキスト処理を行うためには、応用的な使用方法も理解しておく必要があります。
以下では、正規表現の応用的な使用例をいくつか紹介します。
メールアドレスの検証
メールアドレスの検証は、ウェブ開発などで頻繁に使用される正規表現の例です。
以下のコードは、メールアドレスが正しい形式かどうかを検証します。
pattern = r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'
email = "user@example.com"
if re.match(pattern, email):
print("Valid email")
else:
print("Invalid email")
日付フォーマットの変換
次のコードでは、日付形式を正規表現を使用して変更します。
text = "2024/09/21"
result = re.sub(r'(\d{4})/(\d{2})/(\d{2})', r'\3-\2-\1', text)
print(result)
結果は「21-09-2024」となり、日付フォーマットが変換されます。
文字列の分割操作
正規表現を使って、テキストを特定のパターンで分割することが可能です。
例えば、カンマで区切られたテキストを分割する場合、以下のように書きます。
text = "apple,banana,cherry"
result = re.split(r',', text)
print(result)
結果は「[‘apple’, ‘banana’, ‘cherry’]」というリストになります。
まとめ:Pythonでの正規表現と置換の活用法

Pythonの正規表現を使った置換方法は、データの処理やフォーマット変更において非常に有用です。
この記事では、基本的な使い方から応用例まで幅広くカバーしました。
正規表現を使いこなすことで、効率的にテキスト処理を行い、様々な状況に対応できるようになります。
今後のプログラムで正規表現を活用して、柔軟なテキスト操作を実現しましょう。



コメント