Pythonで正規表現とreモジュールを用いた文字列操作

この記事では、Pythonの`re`(正規表現)モジュールを使用して文字列を効率的に操作する方法について解説します。具体的なコード例とその詳細な解説、さらには応用例を3つ以上紹介します。この記事が、Pythonと正規表現を使ってデータ処理を行う際の参考になれば幸いです。

目次

reモジュールとは?

`re`モジュールは、Python標準ライブラリに含まれる正規表現を扱うためのモジュールです。テキストデータの探索、抽出、置換などを行う際に非常に強力です。

基本的な関数

– `re.match()`: 文字列の先頭がパターンと一致するか確認
– `re.search()`: 文字列全体でパターンと一致する部分を検索
– `re.findall()`: パターンに一致する全ての部分をリストで返す
– `re.finditer()`: パターンに一致する全ての部分をイテレータで返す
– `re.sub()`: パターンに一致した文字列を置換

基本的なコード例

正規表現を使って、文字列から数字を抽出する基本的なコードを以下に示します。

import re

# 対象のテキスト
text = "今日は2023年10月11日です。"

# 正規表現パターン
pattern = r"\d+"

# 数字を全て抽出
result = re.findall(pattern, text)

# 出力
print(result)

このコードでは、`re.findall()`関数を使ってテキストから数字(2023、10、11)を抽出しています。

詳細解説

正規表現のパターン

正規表現には特定の文字列を表す「パターン」が必要です。上記の例では`\d+`というパターンを使用しています。これは1個以上の数字を表します。

re.findall()関数

この関数は、指定したパターンに一致するすべての部分文字列をリストとして返します。この関数はテキスト内で複数回パターンが出現する場合に非常に便利です。

応用例

以下に、`re`モジュールの応用例を3つ紹介します。

例1: 電話番号の抽出

日本の電話番号を抽出するコード例です。

import re

# 対象のテキスト
text = "お問い合わせは03-1234-5678または080-1234-5678まで。"

# 正規表現パターン
pattern = r"\d{2,4}-\d{4}-\d{4}"

# 電話番号を抽出
result = re.findall(pattern, text)

# 出力
print(result)

例2: メールアドレスの検出

メールアドレスを抽出するコード例です。

import re

# 対象のテキスト
text = "お問い合わせはinfo@example.comまたはsupport@example.comまで。"

# 正規表現パターン
pattern = r"\w+@\w+\.\w+"

# メールアドレスを抽出
result = re.findall(pattern, text)

# 出力
print(result)

例3: URLの置換

テキスト中のURLをマークダウン形式に置換する例です。

import re
# 対象のテキスト
text = "参考URLはhttp://example.comとhttps://example.comです。"
# 正規表現パターン
pattern = r"https?://\w+\.\w+"
# URLをマークダウン形式に置換
result = re.sub(pattern, r"[参考URL](\g<0>)", text)
# 出力
print(result)

まとめ

Pythonの`re`モジュールを用いた正規表現による文字列操作は、テキスト処理の幅を大いに広げてくれます。本記事で紹介した基本的な操作と応用例を参考に、ぜひ自分自身のプロジェクトで活用してください。

コメント

コメントする

目次