Pythonでテキストデータを処理する際には、正規表現が非常に便利です。特にOR条件を表すアルタネーションは、複数のパターンにマッチさせたい場合に重宝します。この記事では、Pythonでのアルタネーションの基本的な使い方から、その応用例までを解説します。
アルタネーションとは?
正規表現におけるアルタネーションは、いわゆるOR条件を表現する手法です。正規表現内で複数のパターンにマッチさせたい場合に、パイプ記号「|」を用いてそれらをつなぎます。
基本的な構文
基本的な構文は以下のようになります。
import re
pattern = "apple|orange"
text = "I like apple and orange."
result = re.findall(pattern, text)
print(result)
このコードの結果、`result`には`[‘apple’, ‘orange’]`というリストが格納されます。
Pythonでの具体的な使い方
Pythonでのアルタネーションの具体的な使い方を見ていきましょう。最も簡単な例から始めて、少しずつ複雑なケースに応用していきます。
基本的な例
以下の例では、”cat”と”dog”のどちらかにマッチするような正規表現を用います。
pattern = "cat|dog"
text = "I have a cat and a dog."
result = re.findall(pattern, text)
print(result)
このコードでは、`result`には`[‘cat’, ‘dog’]`が格納されます。
括弧を使ったグループ化
パイプ記号で複数のパターンをOR条件として連結する際に、括弧`()`を用いてグループ化することもできます。このようにすると、特定の部分に限定したOR条件を設定できます。
pattern = "(T|t)he"
text = "The car is parked by the theater."
result = re.findall(pattern, text)
print(result)
この例では、「T」または「t」に続く”he”にマッチする正規表現を用います。結果として、`result`には`[‘T’, ‘t’]`が格納されます。
応用例
アルタネーションを使った応用例を2つ紹介します。
メールアドレスのバリデーション
アルタネーションを用いて、メールアドレスのバリデーションを行う例です。
pattern = r"[a-zA-Z0-9._%+-]+@(gmail\.com|yahoo\.co\.jp|example\.com)"
text = "My email addresses are example1@gmail.com and example2@yahoo.co.jp."
result = re.findall(pattern, text)
print(result)
この例では、ドメインが”gmail.com”、”yahoo.co.jp”、”example.com”のいずれかであるメールアドレスにマッチします。
URLからドメイン名を抽出
以下の例は、URLからドメイン名を抽出する場合に使える正規表現です。
pattern = r"https?://(www\.google\.com|www\.yahoo\.co\.jp|www\.example\.com)"
text = "The URLs are https://www.google.com and http://www.yahoo.co.jp."
result = re.findall(pattern, text)
print(result)
この例では、プロトコルが”http”または”https”で、ドメインが”www.google.com”、”www.yahoo.co.jp”、”www.example.com”のいずれかであるURLにマッチします。
まとめ
Pythonで正規表現のアルタネーションを使う方法を基本から応用まで解説しました。アルタネーションはテキスト処理において非常に強力なツールですので、是非ともマスターして多様なテキスト処理に活用してください。
コメント