Pythonで正規表現を使った置換の基本と応用

python
記事内に広告が含まれています。

Pythonでは、正規表現を使用することで、テキスト操作が非常に柔軟かつ効率的に行えます。

特に置換処理は、データのクリーニングや形式変更に欠かせない手法です。

この記事では、Pythonの標準ライブラリであるreモジュールを使用して、文字列のパターンマッチングと置換を行う方法を詳しく解説します。

基本から応用まで、様々な例を通じて学んでいきましょう。

DMM WEBCAMP
  • 未経験者向けプログラミングスクール
  • 現役エンジニアがしっかりサポート
  • 卒業後も安心の転職・副業サポート

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」とフォーマットが変更されます。

CodeCamp
  • 現役エンジニアからスキルを学べる
  • 満足度は驚異の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」となり、数字が置換されます。

【リモートワークには必須】
キャリアに合わせてお得に光回線を利用しよう
ドコモ光
開通後、最短一ヶ月で35,000円のキャッシュバック!
 
auひかり
難しい条件一切なしで、最大12,7000円のキャッシュバック!
 
ソフトバンク光
高額キャッシュバックや豪華特典をお届け!

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の正規表現を使った置換方法は、データの処理やフォーマット変更において非常に有用です。

この記事では、基本的な使い方から応用例まで幅広くカバーしました。

正規表現を使いこなすことで、効率的にテキスト処理を行い、様々な状況に対応できるようになります。

今後のプログラムで正規表現を活用して、柔軟なテキスト操作を実現しましょう。

【給付金が受けられる】おすすめプログラミングスクール!
  • DMM WEBCAMP
    転職成功率98%&離職率2.3%
    転職できなければ全額返金DMM.comグループならで非公開求人も多数
  • テックアカデミー
    【転職保証】受講生の100%が内定獲得!9割以上が未経験からスタート!LINEヤフー監修&万全サポート
  • Aidemy Premium
    【給付金利用の相談歓迎】AI・データ分析学ぶならAidemy Premium
  • ウズウズカレッジ
    初心者・文系出身者でもOK、IT未経験からの専門的な就業サポート

コメント

タイトルとURLをコピーしました