正規表現(Regex)は、文字列の検索や置換、抽出などを行うための強力なツールです。Pythonでは、reモジュールを使用して正規表現を扱います。このガイドでは、Pythonで正規表現を使用する方法について詳しく説明します。
1. 正規表現とは?
正規表現は、特定のパターンに一致する文字列を検索、マッチング、操作するための特殊な文字列です。例えば、メールアドレスや電話番号の形式を検証したり、特定のパターンに一致するテキストを抽出するために使用されます。
2. Pythonでの正規表現の基本
Pythonでは、reモジュールを使用して正規表現を扱います。以下に基本的な操作方法を示します。
2.1 モジュールのインポート
import re
2.2 パターンのコンパイル
正規表現パターンを使用する前に、re.compile関数を使ってコンパイルします。
pattern = re.compile(r'\d+') # 数字に一致するパターン
2.3 パターンのマッチング
パターンに一致するかどうかを確認するには、re.match、re.search、re.findallなどの関数を使用します。
re.match
re.matchは文字列の先頭からパターンに一致するかを確認します。
result = pattern.match('123abc')
if result:
print('一致しました:', result.group())
else:
print('一致しませんでした')
re.search
re.searchは文字列全体からパターンに一致する部分を検索します。
result = pattern.search('abc123def')
if result:
print('一致しました:', result.group())
else:
print('一致しませんでした')
re.findall
re.findallは文字列全体からパターンに一致するすべての部分をリストとして返します。
results = pattern.findall('abc123def456ghi')
print('一致した部分:', results)
3. よく使う正規表現パターン
以下は、よく使われる正規表現パターンのいくつかです。
.: 任意の1文字に一致\d: 数字に一致\D: 数字以外に一致\w: 英数字およびアンダースコアに一致\W: 英数字およびアンダースコア以外に一致\s: 空白文字に一致\S: 空白文字以外に一致*: 直前の文字が0回以上繰り返す+: 直前の文字が1回以上繰り返す?: 直前の文字が0回または1回繰り返す{n}: 直前の文字がちょうどn回繰り返す^: 文字列の先頭に一致$: 文字列の末尾に一致
4. 例: メールアドレスの検証
以下の例では、メールアドレスが正しい形式かどうかを検証します。
import re
email_pattern = re.compile(r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$')
email = '[email protected]'
if email_pattern.match(email):
print('有効なメールアドレスです')
else:
print('無効なメールアドレスです')
5. 正規表現の置換
re.subを使用して、パターンに一致する部分を置換することができます。
import re
text = '私の電話番号は123-456-7890です。'
pattern = re.compile(r'\d{3}-\d{3}-\d{4}')
new_text = pattern.sub('***-***-****', text)
print(new_text) # 私の電話番号は***-***-****です。
6. エラーハンドリング
正規表現を使用する際には、エラーハンドリングも重要です。例えば、無効なパターンをコンパイルしようとしたときにre.errorが発生することがあります。
import re
try:
pattern = re.compile(r'[invalid pattern')
except re.error as e:
print('正規表現のエラー:', e)
まとめ
Pythonのreモジュールを使用すると、正規表現を使った文字列操作が簡単に行えます。基本的なマッチングや置換の操作から、複雑なパターンマッチングまで、幅広い用途に対応できます。正規表現の強力な機能を活用して、効率的な文字列操作を実現しましょう。
