正規表現パターンをステップごとにデバッグする
サンプル入力に対するテスト、マッチの可視化、パターンがマッチする/しない理由の理解によって正規表現をデバッグします。フラグを正しく使いましょう。
- 1
正規表現のデバッグ手順:(1) マッチすべき入力とマッチすべきでない入力の両方でテストする。(2) フラグを確認する — g(グローバル)、i(大文字小文字を無視)、m(複数行)、s(dotall)。(3) ビジュアライザでエンジンのマッチ過程を目視する。(4) パターンを単純化する — 動くまで部分を取り除き、戻す。(5) よくあるミスを確認:特殊文字のエスケープ忘れ、誤った量指定子、誤ったアンカー。
- 2 正規表現テスター →
パターンを複数の入力に対してテストします。まずマッチすべき単純なケースから始め、次にエッジケース(空文字列、特殊文字、Unicode)を試します。ツールはすべてのマッチとキャプチャグループを表示し、パターンが期待から逸脱している箇所を特定しやすくします。
- 3 正規表現置換ツール →
置換の中でパターンをテストし、文脈での動作を確認します。パターン自体は正しくマッチしても、置換で問題が明らかになることがあります(間違ったグループのキャプチャ、量指定子のオフバイワン)。
よくある質問
- なぜ正規表現が何もマッチしないのですか?
- よくある原因:複数マッチ用の g フラグの欠落、パターンが厳しすぎる(誤った量指定子、選択の欠落)、特殊文字の未エスケープ(. は任意の文字にマッチ、\. はリテラルのドットにマッチ)、大文字小文字の区別(i フラグを追加)、誤った位置のアンカー。マッチするはずの最小の入力でテストしてください。
- m フラグと s フラグの違いは?
- m(複数行)は ^ と $ が行境界でもマッチするようにします(文字列の先頭/末尾だけでなく)。s(dotall、単一行)は . が改行にもマッチするようにします。両者は独立です。m は ^/$ に、s は . に影響します。. が改行にマッチし ^/$ が行境界にマッチするようにするには、両方使ってください(ms または gm)。
このタスクを解決するワークフロー
関連ツール
正規表現テスター
Test regular expressions with match highlighting, capture groups, and replace preview。無料、プライベート、100%クライアントサイド。 ツール
正規表現置換ツール
Find and replace text using regular expressions。無料、プライベート、100%クライアントサイド。 ツール
テキスト差分比較ツール
Compare two text blocks line by line using the LCS algorithm. Supports ignoring whitespace and case。無料、プライベート、100%クライアントサイド。 ツール