正規表現(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
モジュールを使用すると、正規表現を使った文字列操作が簡単に行えます。基本的なマッチングや置換の操作から、複雑なパターンマッチングまで、幅広い用途に対応できます。正規表現の強力な機能を活用して、効率的な文字列操作を実現しましょう。