正規表現ゴリ押し部
正規表現
3
みなさん、正規表現は好きですか?
私は好きです。
なにせ判定条件がはっきりとコード上にありますからね。
これをマッチさせたいとか、あれをマッチさせたくないとか、それらがすべてコード上に明快に書かれていることのすばらしさよ!
例えばあなたが、技術記事のタイトルから AI / ML / LLM 関係のものか、そうでないものかを振り分けたいと思ったとしましょう。
そんなときは、こんな正規表現を書くと良いかもしれません。
[
/(?<!転職)エージェント/,
/\bAI\b/,
/\bGPTs?\b/,
/\bLLM\b/,
/\bLVLM\b/,
/\bMCP\b/,
/\bRAG\b/,
/\bv0\b/,
/\bVLM\b/,
/A2UI/,
/Agent ?Framework/i,
/Agent ?Memory/i,
/Agent ?Networks?/i,
/Agent ?Platform/i,
/Agent ?Runtime/i,
/Agent ?Sandbox/i,
/Agent ?Script/i,
/Agent ?Spec/i,
/Agent ?Store/i,
/AgentCore/i,
/Agentforce/i,
/Agentic/i,
/AGENTS\.md/i,
/AIOps/i,
/Amazon ?Nova/i,
/Amazon ?Q/i,
/Amazon ?Textract/i,
/Anthropic/i,
/Antigravity/i,
/AppFunctions/i,
/AutoGPT/i,
/AWS ?Security ?Agent/i,
/Bedrock/i,
/BERT/,
/Bolt\.new/i,
/CatBoost/i,
/cc-sdd/i,
/ChatGPT/i,
/Claude/i,
/CLAUDE\.md/i,
/Cline/i,
/CodeRabbit/i,
/Codex/i,
/Coding ?Agent/i,
/Coding ?Assistant/i,
/Colab/,
/ComfyUI/i,
/Context Engineering/i,
/Copilot/i,
/Cursor/i,
/DALL[·\- ]?E/i,
/Databricks/,
/Deep ?Learning/i,
/Deep ?Research/i,
/DeepMind/i,
/DeepSeek/i,
/Devin/i,
/DevOps Agent/i,
/Diffusion/i,
/Dify/i,
/Embedding/i,
/FLUX\.2/i,
/Foundation Models/i,
/Gemini/i,
/Gemma(?:\s*\d+(?:\.\d+)?[A-Za-z]?)?(?:\s*\d+B)?/i,
/GenAI/i,
/GPU.{0,20}推論/i,
/GraphRAG/i,
/Harness Engineering/,
/HITL/,
/Hugging ?Face/i,
/HunyuanOCR/i,
/Kaggle/i,
/Kiro/i,
/LangChain/i,
/LangGraph/i,
/LLMO/,
/LLMOps/i,
/llms\.txt/i,
/LoRA/i,
/Meta ?CLIP/i,
/Midjourney/i,
/MLflow/i,
/MLOps/i,
/MLモデル/,
/Model ?Context ?Protocol/i,
/Mythos/,
/Nano ?Banana/i,
/NeMo ?ASR/i,
/Notebook ?LM/i,
/Ollama/i,
/OpenAI/i,
/OpenClaw/i,
/OpenCode/i,
/OWL[- ]?ViT/i,
/Perplexity/i,
/PyTorch/i,
/Qwen(?:\d+(?:\.\d+)?)?/i,
/RecSys(?:\s*\d{0,4})?/,
/SageMaker/i,
/SAM3/,
/Skills/,
/Sora(?:\s*\d{0,2})?/,
/Spec ?Kit/,
/Stable ?Diffusion/i,
/TensorFlow/i,
/TinyML/i,
/Transformers?/i,
/Vibe ?Coding/i,
/Vibe ?コーディング/i,
/vLLM/i,
/World ?Models/i,
/YOLO/,
/ヴァイブコーディング/,
/コーディングエージェント/,
/ディープラーニング/,
/ニューラルネットワーク/,
/バイブコーディング/,
/パターン生成/,
/ファインチューニング/,
/プロンプトインジェクション/,
/プロンプトエンジニアリング/,
/ベクトル検索/,
/マルチモーダル/,
/世界モデル/,
/人工知能/,
/仕様駆動/,
/基盤モデル/,
/大規模モデル/,
/大規模言語モデル/,
/強化学習/,
/拡散モデル/,
/文章ベクトル/,
/検索モデル/,
/機械学習/,
/生成AI/,
/生成モデル/,
/生成画像/,
/生成系/,
/画像生成/,
/画像認識/,
/自然言語処理/,
/言語モデル/,
/音声認識/,
];
ちょっと長いですか?
でも、やっていることははっきりとしてますね。
たった 150 パターンにも満たないこの正規表現は、手元のタイトル群では 99% 以上の精度で記事を振り分けられます。
この正規表現はシンプルで、こったところといえば \b で単語境界を見るだとか i で ignore-case するだとか、ほとんどそれくらいのことしかやってません。
もしこれを 99.99% の精度にしようと思うと、正規表現だけでは足りないかもしれません。
でも、99% の精度で良ければ、これでじゅうぶんなのです。
なにもかもがブラックボックス化していく現代に、このシンプルな文字の羅列は、きちんと仕事をしてくれます。
もし、それ以上のことをしたくなったら、そのときにはじめて正規表現以外の手段を考えれば良いのです。
あなたも今日から正規表現を育てて、それでゴリ押ししてみませんか?