正規表現(regex)は、テキストの検索、マッチング、抽出のための強力なパターンです。プログラミング、データ検証、検索と置換、ログ解析で使用されます。難しいのは、regex構文を正確に書くことです。無料の正規表現テスターを使えば、リアルタイムで実験してパターンが何にマッチするか正確に確認できます。
必要なもの
- テストしたいパターン、またはテキストマッチングの問題
- Webブラウザ(Chrome、Firefox、Safari、またはEdge)
- アカウント登録やインストールは不要
ステップバイステップガイド
正規表現テスターを開く
正規表現テスターツールを開きます。2つのメインエリアが表示されます:正規表現パターン用と、マッチ対象のテストテキスト用です。
regexパターンを書く
パターンフィールドに正規表現を入力します。シンプルなものから始めて徐々に複雑にしていきましょう。例えば、helloというリテラル文字列から始めてその文字列に完全にマッチさせ、次に特殊文字を使ってより広いパターンにマッチするように洗練させます。
テストテキストを入力する
テストエリアにサンプルテキストをペーストまたは入力します。マッチすべき例とマッチすべきでない例の両方を含めましょう。入力するとリアルタイムですべてのマッチがハイライト表示されるため、パターンが正しく機能しているかすぐに確認できます。
調整と検証
パターンを調整すると、マッチが即座に更新されます。テストテキストにエッジケース(特殊な入力、境界条件、トリッキーなフォーマット)を追加して、regexが適切に処理するか確認しましょう。満足したら、パターンをコードやツールにコピーします。
豆知識 正規表現テスターはすべてブラウザ内で動作します。データがサーバーに送信されることはないため、メールアドレス、ログファイル、個人データなどの機密テキストに対してパターンを安全にテストできます。
基本的なregex構文
| 記号 | 意味 | 例 |
|---|---|---|
. |
任意の1文字 | h.tは「hat」「hit」「hot」にマッチ |
* |
直前の0回以上の繰り返し | ab*cは「ac」「abc」「abbc」にマッチ |
+ |
直前の1回以上の繰り返し | ab+cは「abc」「abbc」にマッチ、「ac」にはマッチしない |
? |
直前の0回または1回 | colou?rは「color」と「colour」にマッチ |
\d |
任意の数字(0-9) | \d{3}は「123」「456」にマッチ |
\w |
任意の単語文字 | \w+は「hello」「test123」にマッチ |
\s |
任意の空白文字 | hello\sworldは「hello world」にマッチ |
^ |
文字列の先頭 | ^Helloは「Hello world」にマッチ |
$ |
文字列の末尾 | world$は「Hello world」にマッチ |
[abc] |
セット内の任意の文字 | [aeiou]は任意の母音にマッチ |
(...) |
キャプチャグループ | (ab)+は「ab」「abab」にマッチ |
試せる一般的なパターン
これらのパターンを正規表現テスターにコピーして実験してみましょう。
メールアドレス
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
user@example.comやfirst.last@company.co.ukのような標準的なメールフォーマットにマッチします。有効なフォーマットと無効なフォーマットの両方でテストして、エッジケースの処理を確認しましょう。
URL
https?://[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(/[^\s]*)?
https://example.comやhttp://site.org/path/pageのようなHTTPおよびHTTPS URLにマッチします。s?により「https」の「s」がオプションになります。
電話番号(米国フォーマット)
(\+1[-.\s]?)?\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}
さまざまな米国電話番号フォーマットにマッチします:(555) 123-4567、555-123-4567、+1 555.123.4567など。
ヒント regexを構築する際は、ターゲットテキストにマッチする最もシンプルなパターンから始め、制約を1つずつ追加していきましょう。複雑なregexを一度に書こうとするよりも、リアルタイムでマッチの更新を確認しながら段階的に構築する方がはるかに簡単です。
よくあるミスと回避方法
特殊文字のエスケープ忘れ。 .、*、+、?、(、)、[、]、{、}はregexで特別な意味を持ちます。リテラルとしてマッチさせるには、バックスラッシュを前に付けます:\.はピリオドにマッチ、\(は括弧にマッチします。
貪欲すぎるマッチ。 デフォルトでは*と+はできるだけ多くのテキストにマッチします。最短マッチが必要な場合は、後に?を追加します:.*?はできるだけ少なくマッチします。
パターンのアンカーリング忘れ。 ^と$なしでは、\d{3}のようなパターンは文字列内のどこにでもある3つの連続した数字にマッチします(より長い数字の内部も含む)。文字列全体にマッチさせる必要がある場合はアンカーを使用しましょう。
重要 regex構文はプログラミング言語やツールによってわずかに異なります。JavaScriptで動作するパターンがPythonやPHPでは異なる動作をする場合があります。最終的なパターンは、実際に使用する言語や環境で必ずテストしてください。
よくある質問
regexフラグとは何ですか?
フラグはパターンの適用方法を変更します。一般的なフラグにはg(グローバル — 最初のマッチだけでなくすべてを検索)、i(大文字小文字を区別しない)、m(マルチライン — ^と$が文字列境界だけでなく行境界にもマッチ)があります。正規表現テスターではこれらのフラグを切り替えられます。
regexで検索と置換はできますか?
はい。ほとんどのテキストエディタやプログラミング言語はregexベースの検索と置換をサポートしています。キャプチャグループ(...)を使うと、置換文字列内でマッチしたテキストを参照できます。
複数行にまたがるマッチはどうすればよいですか?
s(dotall)フラグを使うと.が改行文字にもマッチするようになります。または、改行を含む任意の文字にマッチするクロスプラットフォーム代替として[\s\S]を使用できます。
次のステップ
regexパターンの構築とテストができるようになったら、コード、テキストエディタ、コマンドラインツールで使ってみましょう。他の開発者ユーティリティとして、スケジューリング式用のCronパーサーや構造化データ用のJSONフォーマッターもチェックしてみてください。