Pythonで正規表現のOR条件(アルタネーション)を活用する方法

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で正規表現のアルタネーションを使う方法を基本から応用まで解説しました。アルタネーションはテキスト処理において非常に強力なツールですので、是非ともマスターして多様なテキスト処理に活用してください。

コメント

コメントする

目次