正規表現

正規表現(Regular ExpressionまたはRegex)は、テキストデータ内で特定のパターンを検索、抽出、置換するための強力なツールです。正規表現は、文字列のパターンマッチングとパターン操作を行うために広く使用されます。Pythonでは、re モジュールを使用して正規表現をサポートしています。

以下は、正規表現の基本的な概念と一般的な操作です:

  1. メタ文字:

    • 正規表現は、メタ文字と呼ばれる特別な文字を使用してパターンを定義します。例えば、.(ドット)は任意の1文字を表し、* は前の要素が0回以上繰り返されることを示します。
  2. 文字クラス:

    • [...] という構文を使用して、一連の文字の中から1つを選択することができます。例えば、[aeiou] は母音のいずれか1文字にマッチします。
  3. 量指定子:

    • *+? などの量指定子を使用して、前の要素が何回繰り返されるかを指定できます。例えば、* は0回以上の繰り返しを示し、+ は1回以上の繰り返しを示します。
  4. アンカー:

    • ^ は行の先頭、$ は行の末尾を表します。これらを使用することで、文字列全体ではなく行の先頭や末尾にパターンをマッチさせることができます。
  5. 特殊シーケンス:

    • d(数字)、w(単語文字)、s(空白文字)など、特殊な文字クラスを表すエスケープされた文字列が存在します。
  6. グループ:

    • () を使用して、正規表現の一部をグループ化することができます。グループを使用することで、マッチした部分文字列を取り出すことができます。

Pythonで正規表現を使用する一般的な手順は次のとおりです:

  1. re モジュールをインポートします。

    python
    import re
  2. 正規表現パターンを定義します。

    python
    pattern = r'd+' # 1つ以上の数字にマッチするパターン
  3. re モジュールの関数を使用して、パターンをテキストデータに適用します。

    • re.search(pattern, text):テキスト内の最初のマッチを検索します。
    • re.findall(pattern, text):テキスト内のすべてのマッチをリストとして返します。
    • re.finditer(pattern, text):テキスト内のすべてのマッチをイテレータとして返します。
  4. マッチした結果を取得し、必要に応じて操作します。

    python
    match = re.search(pattern, text) if match: matched_text = match.group() # マッチしたテキストを取得

以下は正規表現の例です:

python
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: phone_number = match.group() print(f"Phone number found: {phone_number}")

この例では、正規表現を使用してテキストから電話番号を抽出しています。正規表現を活用することで、テキスト内のパターンを検索・抽出するための強力な手段が提供されます。