Pythonの正規表現について:About Regular Expressions in Python
Pythonの正規表現について
正規表現(Regular Expression)は、文字列の検索や置換、抽出などを効率的に行うための表現方法です。
Pythonでは標準ライブラリのre
モジュールを使用して正規表現を扱うことができます。
1. 正規表現を使うための基本
正規表現を使うために、Pythonではre
モジュールをインポートします。
import re # パターンを検索する例 text = "Hello, my phone number is 123-456-7890." pattern = r"\d{3}-\d{3}-\d{4}" # 電話番号の正規表現 match = re.search(pattern, text) if match: print("一致:", match.group()) # 出力: 123-456-7890
2. よく使う正規表現パターン
パターン | 説明 |
---|---|
\d |
数字(0~9)に一致 |
\D |
数字以外の文字に一致 |
\w |
単語構成文字(アルファベット、数字、アンダースコア)に一致 |
\W |
単語構成文字以外に一致 |
.* |
任意の0文字以上の文字列に一致 |
^ |
文字列の先頭に一致 |
$ |
文字列の末尾に一致 |
[abc] |
a、b、cのいずれか1文字に一致 |
3. よく使う関数
-
re.search()
: 指定したパターンが文字列内に存在するかを検索し、最初の一致を返します。 -
re.match()
: 文字列の先頭がパターンに一致するかを確認します。 -
re.findall()
: パターンに一致するすべての部分文字列をリストとして返します。 -
re.sub()
: パターンに一致する部分を別の文字列で置換します。
4. サンプルコード
メールアドレスを抽出する例を以下に示します。
import re text = "連絡先は email@example.com または info@test.org です。" pattern = r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}" emails = re.findall(pattern, text) print("メールアドレス一覧:", emails) # 出力: ['email@example.com', 'info@test.org']
5. 注意点
- 正規表現のパターンは読みやすさとパフォーマンスを考慮して設計する必要があります。
- エスケープ文字(例:
\
)に注意してください。必要に応じてr"..."
を使い、生文字列として扱います。 - 複雑な正規表現はコードの可読性を下げる可能性があるため、適切なコメントや分割を行いましょう。
まとめ
Pythonの正規表現は、文字列処理を効率化するための非常に強力なツールです。
re
モジュールを活用し、必要に応じて適切なパターンを設計することで、多様な文字列処理を簡潔に実現できます。