
正規表現(regex)とは、テキストを照合するためのコンパクトなパターンです。メールアドレスの検証、日付の抽出、ログファイル内のすべてのURLの検索などに使われます。問題は、正規表現は容赦なく、文字を一つ誤っただけでパターンが何にもマッチしなかったり、マッチしすぎたり、全く別のものにマッチしてしまったりすることです。パターンを手探りで書いてそのままプロダクションコードに入れることが、微妙なバグの温床となります。
正規表現をオンラインでテストすることでこの問題が解決します。サンプルテキストを貼り付けてパターンを入力すると、何がマッチして何がマッチしないかを文字単位でハイライト表示しながら即座に確認できます。コンパイル手順も、print文も、パターン一つを確認するためにプログラム全体を再実行する必要もありません。数秒で反復できます。
日常的なパターンの多くは、少数の要素から構成されています:
catはテキスト「cat」にマッチします。[abc]はa、b、cのいずれか1文字にマッチします。[0-9]は任意の数字、[a-z]は任意の小文字にマッチします。\dは任意の数字、\wは任意の単語文字、\sは任意の空白文字です。大文字バージョンはその逆(否定)です。*は0回以上、+は1回以上、?は0回または1回、{2,4}は2〜4回を意味します。^は行頭にマッチし、$は行末にマッチします。パターンを任意の場所でマッチさせるのではなく、特定の位置に固定します。( )は部分をグループ化し、抽出のためにキャプチャします。米国電話番号のマッチ:パターン\d{3}-\d{3}-\d{4}は「415-555-0199」にマッチします — 3桁、ハイフン、3桁、ハイフン、4桁です。「call 415-555-0199 today」に対してテストすると、電話番号の部分だけがハイライトされます。
年号の抽出:\b(19|20)\d{2}\bは、19または20で始まる4桁の年号を、単語境界により長い数字の一部としてではなくマッチさせます。
シンプルなメールアドレスの検証:^[\w.+-]+@[\w-]+\.[\w.-]+$はアドレスの一般的な形式をカバーします。実際のメールアドレス検証は非常に複雑です。パターンを信頼する前に多くのサンプル入力に対してテストすることが重要である理由がここにあります。
.*はできるだけ多くをキャプチャします。最小のチャンクにマッチさせるには、遅延形式.*?を使います。テスターは複数のマッチがあるテキストで違いを即座に示してくれます。\.と書く必要があります。そうしないと.は任意の文字にマッチします。丸括弧、角括弧、プラス記号も同様です。^と$がないと、「検証」パターンが無効な入力の中にある有効な部分文字列にマッチしてしまう可能性があります。信頼できるワークフローはインクリメンタルです:パターンの小さな部分を書き、マッチを確認し、次の部分を追加します。オンラインでテストすることで、フィードバックが即座に得られ、空文字列、不正な入力、一般的でないが有効な値など、実際に気になるエッジケースを貼り付けることができるため、このループが短くなります。
無料のオンライン正規表現テスターを開く — パターンを入力し、テストテキストを貼り付けると、キャプチャグループとともにライブでハイライトされたマッチが表示されます。サインアップ不要、ブラウザ上で完全に動作します。