regex-expert について
regex-expert は、複数の正規表現フレーバーで作成、理解、デバッグ、最適化を行う開発者向けスキルです。エンジンごとの差異、読みやすい説明、テスト、性能上の注意点を扱います。
主な機能
- 01PCRE、JavaScript、Python、Rust、Go、POSIXに対応
- 02パターン作成と可読性の原則
- 03デバッグとマッチテストの方針
- 04性能とバックトラッキングの助言
- 05一般的なパターン例と注意点
活用シーン
- 01特定の正規表現エンジン向けの構文選択
- 02マッチ例と非マッチ例によるパターンのデバッグ
- 03バックトラッキングの危険がある遅いパターンの改善
- 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、電話番号)の検証を正規表現だけで行わないでください。専用の検証ライブラリを使い、正規表現は簡易的な事前フィルタリングにとどめてください。
コメント
Markdown 対応