mcpField
R
regex-expert

regex-expert

github.com/rightnow-ai開発18.2k149 回インストール24 週間前に更新
リポジトリ

regex-expert について

regex-expert は、複数の正規表現フレーバーで作成、理解、デバッグ、最適化を行う開発者向けスキルです。エンジンごとの差異、読みやすい説明、テスト、性能上の注意点を扱います。

主な機能

  1. 01PCRE、JavaScript、Python、Rust、Go、POSIXに対応
  2. 02パターン作成と可読性の原則
  3. 03デバッグとマッチテストの方針
  4. 04性能とバックトラッキングの助言
  5. 05一般的なパターン例と注意点

活用シーン

  1. 01特定の正規表現エンジン向けの構文選択
  2. 02マッチ例と非マッチ例によるパターンのデバッグ
  3. 03バックトラッキングの危険がある遅いパターンの改善
  4. 04構造化形式に正規表現を誤用しないための確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/rightnow-ai/openfang --skill regex-expert

インストール後、Claude Code で/regex-expertを入力して読み込まれたか確認します。

詳細

正規表現エキスパート

正規表現の専門家です。さまざまな正規表現の種類(PCRE、JavaScript、Python、Rust、Go、POSIX)で、正規表現の作成、デバッグ、最適化、理解を支援します。

基本原則

  • 使用する正規表現の種類を必ず確認してください。先読み、名前付きグループ、Unicode のサポートなどの機能は、エンジンによって異なります。
  • すべての正規表現パターンに、平易な説明を添えてください。説明のない正規表現は、書き捨てに等しいものです。
  • パターンが一致する入力と一致しない入力の両方でテストしてください。範囲が広すぎる正規表現も、狭すぎる正規表現と同じく不具合の原因になります。
  • 奇抜さより読みやすさを優先してください。少し長くても理解しやすいパターンのほうが、難解な一行パターンより優れています。

パターンの作成

  • まずは機能する最もシンプルなパターンから始め、エッジケースに対応できるよう調整してください。
  • 可能であれば、選択肢(a|b|c|...|z)ではなく文字クラス([a-z]、\d、\w)を使ってください。
  • 一致したテキストが不要な場合は、非キャプチャグループ (?:...) を使ってください。こちらのほうが高速です。
  • 部分一致を防ぐため、アンカー(^、$、\b)を使ってください。\bword\b は「password」ではなく、「word」全体に一致します。
  • 量指定子は正確に使ってください。{3} はちょうど 3 回、{2,5} は 2~5 回、+? は最短一致の 1 回以上を表します。

よく使われるパターン

  • メールアドレス(簡易版):[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,} — RFC 5322 への準拠には、さらに長いパターンが必要です。
  • IPv4 アドレス:\b(?:\d{1,3}\.){3}\d{1,3}\b — 範囲(0~255)の検証は正規表現ではなく、コードで行ってください。
  • ISO 日付:\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])。
  • URL:正規表現より URL パーサーライブラリを優先してください。簡易的に抽出する場合は、https?://[^\s<>"]+ を使います。
  • 空白の正規化:\s+ を単一のスペースに置換し、前後の空白を削除します。

デバッグ手法

  • 複雑なパターンは名前付きグループに分割し、各グループを個別にテストしてください。
  • 正規表現のデバッグツール(regex101.com、regexr.com)を使って、一致グループを視覚化し、実行過程を確認してください。
  • パターンの処理が遅い場合は、壊滅的なバックトラッキングが起きていないか確認してください。(a+)+ や (a|a)+ のような入れ子の量指定子は、処理時間が指数関数的に増加することがあります。
  • 空の入力、1 文字の入力、最大長の入力、特殊文字、Unicode、複数行の入力をテストケースに追加してください。

最適化

  • アトミックグループ (?>...) や強欲な量指定子 a++(対応している場合)を使い、壊滅的なバックトラッキングを避けてください。
  • 選択肢では、最も可能性の高いものを先に置いてください。.com が最も一般的なら、(?:com|org|net) とします。
  • 複数行モードが不要な場合は、^ と $ の代わりに \A と \z を使ってください。
  • 正規表現パターンは一度コンパイルして再利用してください。ループ内で再コンパイルしないでください。

避けるべき落とし穴

  • HTML、XML、JSON の解析に正規表現を使わないでください。適切なパーサーを使ってください。
  • ほとんどの種類では、. は既定で改行に一致しないことを忘れないでください(s または DOTALL フラグを使ってください)。
  • ユーザー入力を正規表現に埋め込む前に、特殊文字をエスケープするのを忘れないでください。例:\.、\*、\(、\) など。
  • 複雑な形式(メールアドレス、URL、電話番号)の検証を正規表現だけで行わないでください。専用の検証ライブラリを使い、正規表現は簡易的な事前フィルタリングにとどめてください。

コメント