Pythonで正規表現のフラグとモディファイアを活用する方法

Pythonでテキスト処理を行う際には、正規表現(Regex)が非常に役立ちます。しかし、正規表現の基本文法だけではなく、フラグやモディファイアを使いこなすことで、より高度なテキスト処理が可能になります。本記事では、Pythonで使用できる主要な正規表現のフラグとモディファイアについて解説します。

目次

正規表現の基礎

Pythonで正規表現を使うには、`re` モジュールを使用します。このモジュールはPython標準ライブラリに含まれているため、特別なインストールは不要です。

正規表現の基本操作

以下のコードは、正規表現を使って文字列から数字を抽出する基本的な例です。

import re

text = "私の年齢は25歳です"
result = re.search(r'\d+', text)
if result:
    print(result.group())  # 25

フラグとモディファイアの概要

正規表現で用いるフラグとモディファイアは、検索や置換の挙動を細かく制御するためのものです。例えば、大文字・小文字を区別しない検索、複数行にまたがる検索などがこれに該当します。

主要なフラグとモディファイア

Pythonの`re`モジュールでよく使用されるフラグとモディファイアを以下に示します。

  • re.IGNORECASE(re.I): 大文字・小文字を区別しない
  • re.MULTILINE(re.M): 複数行に対応
  • re.DOTALL(re.S): ドット(.)が改行にもマッチする

フラグの使用例

大文字・小文字を区別せずにマッチさせる例を以下に示します。

text = "Python python"
result = re.findall(r'python', text, re.IGNORECASE)
print(result)  # ['Python', 'python']

応用例1: 複数のフラグを組み合わせる

複数のフラグを組み合わせることで、より複雑な条件でのテキストマッチングが可能になります。

# 複数のフラグを組み合わせる例
text = """Python is good.
PYTHON IS GOOD.
"""
result = re.findall(r'^python.*', text, re.IGNORECASE | re.MULTILINE)
print(result)  # ['Python is good.', 'PYTHON IS GOOD.']

応用例2: 自作のモディファイアを使用する

Pythonの`re`モジュールでは、自作のモディファイアを定義して使用することも可能です。以下のコードは、指定した文字だけをエスケープする自作のモディファイアを使用した例です。

# 自作モディファイアの使用例
def escape_only_dollars(pattern):
    return pattern.replace('$', r'\$')

text = "The price is $100."
pattern = escape_only_dollars(r"\$[0-9]+")
result = re.search(pattern, text)
if result:
    print(result.group())  # $100

まとめ

正規表現はテキスト処理において非常に強力なツールですが、フラグとモディファイアを使いこなすことでさらにその可能性は広がります。今回紹介したフラグやモディファイアを活用して、高度なテキスト処理を行いましょう。

コメント

コメントする

目次