はじめに
魔法の世界で最も頭の良い人々が集まり、魔法の奥深さを探究するホグワーツ魔法学校へようこそ。これらの回廊と隠された部屋の中には、最も熟練した魔法使いさえ困惑するチャレンジがあります。それは、Python 正規表現の神秘的な技術を身につけることです。
この魔法の世界で、私たちは主人公に会います。彼は、最も精巧で力強い杖を作ることで知られる才能ある杖職人です。これらの杖は単なる道具ではなく、古代魔法世界の伝説と秘密を内包しています。カスタマイズの高い要求と複雑さに対応するために、杖職人は Python 正規表現を使って、ルーンの彫刻と呪文の句を合理化しています。
目標は明確です。Python 正規表現の強力な魔法を学び、応用して、杖職人が魔法のテキストと公式をより効率的に整理して処理できるようにすることです。あなたはこのチャレンジに立ち向かえて、正規表現の魔法使いになれますか?
基本的なパターンを理解する
このステップでは、Python 正規表現で使用される基本的なパターンを紹介します。適切なパターンを使えば、正確な呪文を唱えるように、テキストのマッチング、検索、フィルタリングができます。杖のデザインにおける単純なルーンシーケンスを識別するための基本的な正規表現を作成する練習をしましょう。
まず、~/project ディレクトリにある rune_sequences.py という名前のファイルを開き、与えられたテキスト内のすべての母音の組み合わせを見つけるための正規表現を書きましょう。
import re
## 架空のルーンシーケンスを含むサンプルテキスト
text = "aeiou aci aeiooo cuii exiovi"
## すべての母音の組み合わせをマッチする正規表現パターン
pattern = r"[aeiou]+"
## 'findall' メソッドを使ってすべてのマッチを見つける
matches = re.findall(pattern, text)
print("Vowel combinations found:", matches)
上記のコードをターミナルで実行し、出力を観察しましょう。
python rune_sequences.py
期待される出力は、以下のように母音のすべての組み合わせがリストされるはずです。
Vowel combinations found: ['aeiou', 'a', 'i', 'aeiooo', 'uii', 'e', 'io', 'i']
杖のコア要素の抽出
これで基本的なパターンマッチングをマスターしたので、もう少し高度なものに移りましょう。杖職人はリストからコア素材を抽出する必要があります。各杖のコアは複合語で、通常は魔法生物が接頭辞に、魔法物質が接尾辞に付きます。
~/project ディレクトリにある wand_cores.py という名前のファイルを開き、与えられたテキストから杖のコアをマッチさせてリストするための正規表現パターンを書きましょう。
import re
## 杖のコアを含む混合情報のあるテキスト
text = "dragonheartstring phoenixfeather unicornhair basiliskvenom trollwhisker"
## 杖のコア(複合語)をマッチさせる正規表現パターン
pattern = r"\b\w+heartstring|\b\w+feather|\b\w+hair|\b\w+venom|\b\w+whisker"
## 'findall' メソッドを使ってすべてのマッチを見つける
wand_cores = re.findall(pattern, text)
print("Wand cores extracted:", wand_cores)
上記のコードを実行して、杖のコアのリストを確認しましょう。
python wand_cores.py
期待される出力は、テキストに見つかった杖のコアが表示されるはずです。
Wand cores extracted: ['dragonheartstring', 'phoenixfeather', 'unicornhair', 'basiliskvenom', 'trollwhisker']
呪文句を検証する
最後のチャレンジとして、杖に呪文をかけるために使用される句を検証します。句は厳格なパターンに従わなければなりません。つまり、魔法の言葉で始まり、コロンが続き、その後にコンマ区切りの魔法的なパラメータまたは呪文のシリーズが続きます。有効な呪文句は 'Lumos:maxima,solemnly,nova' のようになります。
~/project ディレクトリにある enchantment_validator.py を開き、正規表現を使って呪文句のリストを検証する関数を書きましょう。
import re
def validate_enchantment(phrase):
## 有効な呪文句をマッチさせる正規表現パターン
pattern = r"^[A-Za-z]+:(?:[A-Za-z]+,)*[A-Za-z]+$"
if re.fullmatch(pattern, phrase):
return True
else:
return False
## 検証する句のリスト
phrases = [
"Lumos:maxima,solemnly,nova",
"Reducio:shrink,less",
"Protego:maxima",
"Alohomora:",
"Expelliarmus:disarm,fight,duel,"
]
## 各句を検証する
for phrase in phrases:
result = validate_enchantment(phrase)
print(f"'{phrase}' is {'valid' if result else 'invalid'}")
コードを実行して、検証結果を確認しましょう。
python enchantment_validator.py
期待される出力は、どの句が有効かを示すものでなければなりません。
'Lumos:maxima,solemnly,nova' is valid
'Reducio:shrink,less' is valid
'Protego:maxima' is valid
'Alohomora:' is invalid
'Expelliarmus:disarm,fight,duel,' is invalid
まとめ
この実験では、ホグワーツ魔法学校を舞台にした魔法の旅を歩み、Python 正規表現の魔法をマスターしました。ルーンシーケンスの基本的なパターンを解読し、杖のコアを抽出し、呪文句を検証するまで、杖職人を支援するためのスキルを磨きました。
この実践的なアプローチを通じて、あなたが正規表現のテキスト処理における力と多様性をより深く理解し、評価していただけたことを願っています。あなたの旅は、あなたのコーディングのレパートリーを拡充するだけでなく、正規表現の世界における Python の魔法をあなたに吹き込みました。



