Python Programming

Pythonのre.sub()による正規表現ワイルドカードの完全習得

Spread the love

正規表現(regexまたはregexp)は、文字列内のパターンマッチングのための強力なツールです。Pythonのreモジュールは、正規表現操作のための堅牢な機能を提供しており、ワイルドカードが重要な役割を果たします。この記事では、様々な文字列操作タスクにおいて、re.sub()関数でワイルドカードを効果的に使用する方法を解説します。

目次

ワイルドカードを使用した基本的な正規表現置換

re.sub()関数は、正規表現置換の基本です。構文はre.sub(pattern, replacement, string, count=0, flags=0)です。patternは正規表現、replacementは置換文字列、stringは入力、countは置換の制限、flagsはマッチング動作を変更します。ワイルドカードはpatternの柔軟性を劇的に向上させます。

文字列内のすべての母音を「X」に置き換えてみましょう。


import re

text = "Hello, World!"
replaced_text = re.sub(r"[aeiou]", "X", text, flags=re.IGNORECASE)
print(f"Original: {text}")
print(f"Replaced: {replaced_text}")

[aeiou]は、任意の母音にマッチするワイルドカード文字セットです(re.IGNORECASEにより大文字と小文字を区別しません)。

高度なワイルドカードの使用と限定子

re.sub()は複雑なワイルドカードをサポートします。1つ以上の数字の連続を「NUMBER」に置き換えてみましょう。


import re

text = "My phone number is 123-456-7890 and my zip code is 90210."
replaced_text = re.sub(r"d+", "NUMBER", text)
print(f"Original: {text}")
print(f"Replaced: {replaced_text}")

d+は1つ以上の数字にマッチします(dは数字にマッチし、+は1つ以上の繰り返しを表します)。

主要なワイルドカードをまとめた表を以下に示します。

ワイルドカード 説明
. 改行文字以外の任意の文字にマッチします。
* 先行する要素の0回以上の出現にマッチします。
+ 先行する要素の1回以上の出現にマッチします。
? 先行する要素の0回または1回の出現にマッチします。
[] 文字セットを定義します(例:[abc])。
[^] 否定された文字セットを定義します(例:[^abc])。
() キャプチャグループを作成します。
特殊文字をエスケープします(例:.はリテラルのドットにマッチします)。

複雑なパターンのためのワイルドカードの組み合わせ

ワイルドカードを組み合わせることで、強力なパターンを作成できます。「a」で始まり、任意の文字が続く単語を置き換えてみましょう。


import re

text = "A apple a day keeps the doctor away."
replaced_text = re.sub(r"aw*", "WORD", text, flags=re.IGNORECASE)
print(f"Original: {text}")
print(f"Replaced: {replaced_text}")

aw*は、「a」に続いて0個以上の単語文字(w)が続くパターンにマッチします。

実例:メールアドレスと電話番号の抽出

re.sub()は、複雑なパターン処理に優れています。メールアドレスを「EMAIL」に置き換えてみましょう。


import re

text = "Contact us at [email protected] or [email protected]."
replaced_text = re.sub(r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}", "EMAIL", text)
print(f"Original: {text}")
print(f"Replaced: {replaced_text}")

この正規表現は、一般的なメールアドレスの形式にマッチします。

結論

re.sub()関数は、正規表現のワイルドカードと組み合わせることで、Pythonでの文字列操作のための柔軟で効率的な方法を提供します。これらのテクニックを習得することは、テキスト処理やデータクレンジングのタスクに役立ちます。意図しない置換を避けるためには、正規表現の構築に注意することが重要です。効果的な文字列操作には、実験とワイルドカードのニュアンスの理解が不可欠です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です