Pythonで文字列を扱う際、特定のパターンに合致する文字列を検索・抽出・置換したい場面が多くあります。そんな時に便利なのが「正規表現(Regular Expression)」です。本記事では、Pythonで正規表現を使うための基本から実践的な使い方まで、初心者にもわかりやすくまとめます。
正規表現とは、文字列のパターンを記述するための記法です。例えば、「メールアドレスや郵便番号のような特定の形式の文字列を抽出したい」「住所の特定部分だけを抜き出したい」といった場合に活用できます128。
Pythonで正規表現を使うには、標準ライブラリのre
モジュールをインポートします。
import re
関数名 | 説明 |
---|---|
re.match() | 文字列の先頭がパターンに一致するか判定 |
re.search() | 文字列のどこかにパターンが一致するか判定 |
re.findall() | パターンに一致する全ての部分をリストで返す |
re.sub() | パターンに一致する部分を別の文字列に置換 |
re.split() | パターンに一致する部分で文字列を分割 |
正規表現にはさまざまな記号(メタキャラクター)があります。
記号 | 意味・例 |
---|---|
\d | 数字(例: 0-9) |
\w | 英数字またはアンダースコア |
\s | 空白文字(スペース、タブ、改行など) |
. | 任意の一文字(改行を除く) |
^ | 行頭に一致 |
$ | 行末に一致 |
* | 0回以上の繰り返し |
+ | 1回以上の繰り返し |
? | 0回または1回の繰り返し |
{n} | n回の繰り返し |
[] | 文字の集合(例: [abc] は a, b, c のいずれか) |
import re
text = "連絡先は、example@email.com と another.example@email.co.jp です。"
pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
emails = re.findall(pattern, text)
print(emails)
出力例:
['example@email.com', 'another.example@email.co.jp']
import re
with open("address.txt", "r", encoding="utf-8") as file:
for line in file:
match = re.search(r"\d{3}-\d{4}", line)
if match:
print(match.group())
import re
text = "2025年05月30日"
new_text = re.sub(r"\d{4}年(\d{2})月(\d{2})日", r"/\2/2025", text)
print(new_text)
出力例:
05/30/2025
Pythonの正規表現は、文字列処理を効率化する強力なツールです。re
モジュールを使い、基本的な記法と関数を覚えることで、メールアドレスや郵便番号の抽出、文字列の置換などさまざまな場面で活用できます。まずは簡単な例から始めて、徐々に応用力を高めていきましょう