Python3 #30: 正規表現(Regex)

独習 PYTHON 3

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

購読
通知
0 Comments
Inline Feedbacks
View all comments