Pythonで正規表現を用いた文字列置換の方法と応用例

この記事では、Pythonで正規表現を使った文字列の置換について詳しく解説します。具体的なコード例とその解説、さらに応用例を2つ紹介します。

目次

はじめに:正規表現とは?

正規表現(Regular Expression)とは、文字列の検索や置換を行うためのパターン言語です。Pythonでは`re`モジュールを用いて正規表現の操作が可能です。

基本的な文字列置換の仕方

Pythonの`re`モジュールの`sub`関数を用いて、基本的な文字列の置換を行いましょう。

import re

# 正規表現パターンと置換文字を定義
pattern = r"apple"
replacement = "orange"

# 対象の文字列
text = "I have an apple."

# 置換
result = re.sub(pattern, replacement, text)

print(result)  # 出力: "I have an orange."

コードの解説

– `import re`: `re`モジュールをインポートします。
– `pattern = r”apple”`: 置換する対象の正規表現パターンを定義します。
– `replacement = “orange”`: 置換後の文字列を定義します。
– `re.sub(pattern, replacement, text)`: `text`内の`pattern`に一致する部分を`replacement`で置換します。

正規表現を使った高度な置換

# 複数の空白を一つに置換
text = "This  is  a   text."
result = re.sub(r"\s+", " ", text)
print(result)  # 出力: "This is a text."

コードの解説

– `r”\s+”`: 一つ以上の空白(スペース、タブ、改行など)にマッチします。
– `re.sub(r”\s+”, ” “, text)`: `text`内の一つ以上の連続する空白を一つのスペースに置換します。

応用例1:日付形式の置換

# YYYY/MM/DD を YYYY-MM-DD に置換
text = "Today is 2023/10/17."
result = re.sub(r"(\d{4})/(\d{2})/(\d{2})", r"\1-\2-\3", text)
print(result)  # 出力: "Today is 2023-10-17."

コードの解説

– `r”(\d{4})/(\d{2})/(\d{2})”`: 年、月、日にマッチする正規表現を定義します。
– `r”\1-\2-\3″`: それぞれのキャプチャグループをダッシュでつなげます。

応用例2:メールアドレスのドメイン変更

# メールアドレスのドメインを変更
text = "my.email@example.com"
result = re.sub(r"@example\.com", "@newdomain.com", text)
print(result)  # 出力: "my.email@newdomain.com"

コードの解説

– `r”@example\.com”`: `@example.com`にマッチします。`.`はエスケープしています。
– `r”@newdomain.com”`: 新しいドメイン名に置換します。

まとめ

この記事で紹介したPythonの`re`モジュールと`sub`関数を用いることで、基本的な文字列置換から高度な置換まで容易に行えます。日常のプログラミング作業で非常に便利なスキルであるため、ぜひ習得してください。

コメント

コメントする

目次