Pythonでの正規表現の書き方

Python正規表現を扱う際に使える文法や書き方は多岐にわたります。正規表現を使うことで、文字列のパターンマッチングや検索、置換などができるようになります。本記事では、Pythonでの正規表現の書き方について詳しく解説します。

正規表現の基本的な文法

Pythonのreモジュールを使うことで正規表現を扱うことができます。以下に、正規表現で使われる基本的な文法を示します。

  • 文字のマッチング:文字列と同じ文字でマッチングします。
    • 例: aは文字列"a"とマッチングします。
  • ドット(.):任意の一文字とマッチングします。
    • 例: a."ab""ac"とマッチングしますが、"a""ad"とはマッチングしません。
  • 文字クラス():内のいずれかの文字とマッチングします。
    • 例: [abc]"a""b""c"とマッチングしますが、"d""ab"とはマッチングしません。
  • ワイルドカード(\w):アルファベット、数字、アンダースコア(_)のいずれかとマッチングします。
    • 例: \w"a""1""_"とマッチングしますが、"あ""%"とはマッチングしません。
  • パターンの繰り返し:
    • *:0回以上の繰り返しにマッチングします。
      • 例: a*"""a""aaaa"とマッチングします。
    • +:1回以上の繰り返しにマッチングします。
      • 例: a+"a""aaaa"とマッチングしますが、""とはマッチングしません。
    • ?:0回または1回の繰り返しにマッチングします。
      • 例: a?"""a"とマッチングしますが、"aa"とはマッチングしません。
    • {m}:m回の繰り返しにマッチングします。
      • 例: a{3}"aaa"とマッチングしますが、"aa""aaaa"とはマッチングしません。
    • {m,n}:m回以上n回以下の繰り返しにマッチングします。
      • 例: a{2,4}"aa""aaa""aaaa"とマッチングしますが、"a""aaaaa"とはマッチングしません。
  • アンカー:
    • ^:文字列の先頭にマッチングします。
      • 例: ^a"abc"とマッチングしますが、"bac"とはマッチングしません。
    • $:文字列の末尾にマッチングします。
      • 例: a$"cba"とマッチングしますが、"abc"とはマッチングしません。

正規表現を使ったプログラムの書き方

Pythonのreモジュールを使って、正規表現を使ったプログラムを書くことができます。以下に、正規表現を使ったプログラムの例を示します。

import re

# 文字列のパターンマッチング
pattern = r"cat"
text = "The cat is sleeping."
match = re.search(pattern, text)
if match:
    print("Match found!")
else:
    print("Match not found.")

# 文字列の置換
pattern = r"cat"
text = "The cat is sleeping."
replacement = "dog"
new_text = re.sub(pattern, replacement, text)
print(new_text)

# マッチした文字列の取得
pattern = r"(\d{3})-(\d{4})-(\d{4})"
text = "My phone number is 123-4567-8901."
match = re.search(pattern, text)
if match:
    print("Match found!")
    area_code, exchange_number, subscriber_number = match.groups()
    print(area_code, exchange_number, subscriber_number)
else:
    print("Match not found.")

上記のプログラムでは、正規表現を使って文字列のパターンマッチング、文字列の置換、マッチした文字列の取得を行っています。reモジュールのsearch関数を使って、正規表現にマッチする部分文字列を検索しています。また、sub関数を使って、正規表現にマッチする部分文字列を置換しています。さらに、groupsメソッドを使って、マッチした文字列のグループを取得しています。

正規表現を使ったプログラムを書く際には、正規表現の文法を理解し、reモジュールの関数を適切に使うことが大切です。また、正規表現のパターンを正確に書くことで、効率的な文字列処理を実現することができます。