メールアドレスを検証したり、ログ行からタイムスタンプを抽出したり、時々引用符付きカンマを含むCSVフィールドを解析したりするための正規表現が必要です。パターンを書き、コード内で1つのサンプル文字列に対してテストし、エッジケースで失敗することに気づき、調整し、再ビルドし、再度テストします。1回の反復には30秒のコンパイル・実行・確認がかかり、ほとんどの正規表現パターンは確実に動作するまでに5、6回の反復を必要とします。
代替手段はregex101.comです——マッチをリアルタイムで表示し、パターンの各部分を説明し、複数の入力に対して同時にテストできる優れたツールです。しかしブラウザで動作するため、テストデータ(ログ行、ユーザーレコード、APIレスポンス)を公開ウェブサイトに貼り付けることになります。しかもインターネット接続が必要です。
正規表現においてリアルタイムフィードバックが重要な理由
正規表現は本質的に密度が高いものです。.*と.*?(貪欲対非貪欲)の違いによって、パターンが1行にマッチするか、ファイル全体にマッチするかが変わります。先読み、文字クラス、キャプチャグループは、頭の中で推論するのが難しい形で相互作用します。パターンを入力しながらマッチがハイライトされるのを見ることで、正規表現は当て推量から視覚的で反復的なプロセスへと変わります。
これが、ブラウザベースのテスターがこれほど人気な理由です——ソースコード内で正規表現を書く際には得られないフィードバックループを提供してくれます。問題は、ブラウザとインターネット接続が必要で、テストデータがプライベートに保たれるという信頼が必要になることです。
Macでローカルに正規表現をテスト
Bellowsには、41個の開発者ツールの1つとして正規表現テスターが含まれています。パターンを入力し、テスト文字列を貼り付ければ、マッチがリアルタイムでハイライト表示されます。パターンを調整すれば結果が即座に更新されます——コンパイルの手順も、ページの再読み込みも、ネットワークリクエストも不要です。
よくあるパターンをより簡単に
ログファイルから日付を抽出する(\d{4}-\d{2}-\d{2})。国番号がオプションの電話番号を検証する。自由形式のテキストからURLをマッチさせる。フィールドが引用符で囲まれている可能性のあるCSVやTSVといった構造化データを解析する。これらのパターンは概念的にはシンプルですが、エッジケースでは厄介です——リアルタイムのテスターがあれば、それらのエッジケースが本番環境に到達する前に捕まえられます。
データがMacの外に出ない
テストデータにサーバーログやユーザー情報、社内システムの出力が含まれる場合、正規表現パターンをオフラインでテストすることは単なる便利さではなく、責任ある選択です。Bellowsはネットワークアクセスなしで完全にあなたのマシン上で動作します。
常に利用可能
Bellowsはメニューバーに常駐しているため、正規表現テスターはワンクリックで利用できます。探すべきブラウザタブも、覚えておくべきURLも、読み込みスピナーもありません。開いて、パターンをテストし、結果をコピーして、閉じる。一連のやり取りはほんの数秒で終わります。