正規表現テストツール

正規表現パターンを入力すると、テスト文字列に対するマッチ結果をリアルタイムでハイライト表示します。

/.*/ 正規表現テスター

/ /
テスト文字列 マッチ結果(ハイライト表示)
マッチ数: 0
パターン: -
マッチ一覧

よく使う正規表現パターン

パターン 説明
[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,} メールアドレス
https?://[\\w\\-]+(\\.[\\w\\-]+)+[/\\w\\-.~:?#\\[\\]@!$&'()*+,;=%]* URL
0[0-9]{1,4}[\\-]?[0-9]{1,4}[\\-]?[0-9]{3,4} 電話番号(日本)
\\d{4}[\\-/]\\d{1,2}[\\-/]\\d{1,2} 日付(YYYY-MM-DD / YYYY/MM/DD)
\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3} IPアドレス(IPv4)
[\\u3040-\\u309F]+ ひらがな
[\\u30A0-\\u30FF]+ カタカナ
[\\u4E00-\\u9FFF]+ 漢字(CJK統合漢字)

正規表現(RegExp)とは

正規表現(Regular Expression、略称 RegExp / regex)とは、文字列の中から特定のパターンに一致する部分を検索・抽出・置換するための表記法です。1950年代に数学者スティーヴン・クリーネによって理論的な基礎が築かれ、その後UNIXのテキスト処理ツール(grep、sed、awk)に実装されたことで、プログラミングの世界に広く普及しました。現在ではJavaScript、Python、Java、PHP、Rubyなど、ほぼすべての主要なプログラミング言語が正規表現をサポートしており、テキスト処理における必須スキルのひとつとされています。正規表現を使えば、単純な文字列検索では実現できない柔軟なパターンマッチングが可能になり、入力値のバリデーション、ログファイルの解析、データのクレンジングなど、幅広い場面で活用されています。

基本的な構文と特殊文字

正規表現の構文は、通常の文字(リテラル)と特殊な意味を持つメタ文字の組み合わせで構成されます。最も基本的なメタ文字を理解することが、正規表現を使いこなすための第一歩です。ドット(.)は改行を除く任意の1文字にマッチし、アスタリスク(*)は直前の要素の0回以上の繰り返し、プラス(+)は1回以上の繰り返し、クエスチョンマーク(?)は0回または1回の出現を表します。角括弧([])で囲んだ文字クラスは、その中のいずれか1文字にマッチします。たとえば [a-z] は小文字のアルファベット1文字、[0-9] は数字1文字に対応します。丸括弧(())はグループ化に使われ、マッチした部分文字列をキャプチャして後から参照できます。パイプ記号(|)は「または」を意味し、複数の選択肢を指定できます。キャレット(^)は行頭、ドル記号($)は行末へのアンカーとして機能します。

文字クラスとショートカット

正規表現には、よく使うパターンを短く書くためのショートカットが用意されています。\d は数字([0-9]と同等)、\w は英数字とアンダースコア([a-zA-Z0-9_]と同等)、\s は空白文字(スペース、タブ、改行など)にそれぞれマッチします。これらの大文字版(\D, \W, \S)は、その否定を表します。たとえば \D は数字以外の任意の文字にマッチします。文字クラスの中ではハイフンを使って範囲を指定でき、[A-Za-z] で全英字、[ぁ-ん] でひらがなを表現できます。

量指定子(Quantifier)

量指定子は、パターンの繰り返し回数を指定するための記法です。{n} はちょうどn回、{n,} はn回以上、{n,m} はn回以上m回以下の繰り返しを意味します。たとえば \d{3} は3桁の数字、[A-Z]{2,5} は2文字以上5文字以下の大文字アルファベットにマッチします。デフォルトでは量指定子は「貪欲(greedy)」に動作し、可能な限り長い文字列にマッチしようとします。量指定子の後に?を付ける(例: *?、+?)と「非貪欲(lazy)」モードになり、最短一致でマッチします。

日本語テキスト処理での活用

日本語のテキスト処理では、ひらがな・カタカナ・漢字をそれぞれ区別して抽出したい場面が頻繁にあります。Unicodeの文字範囲を利用すれば、正規表現でこれらを識別できます。ひらがなは [\u3040-\u309F]、カタカナは [\u30A0-\u30FF]、漢字(CJK統合漢字)は [\u4E00-\u9FFF] の範囲で指定します。たとえば、テキストから漢字のみを抽出したい場合は [\u4E00-\u9FFF]+ というパターンを使います。また、全角数字 [\uFF10-\uFF19] や全角英字 [\uFF21-\uFF3A\uFF41-\uFF5A] の検出にも正規表現が活躍します。日本語の郵便番号(例: 123-4567)を検出するには \d{3}-\d{4} というパターンが使えますし、日本の電話番号パターンも正規表現で柔軟に記述できます。

実践的な使用例

フォーム入力のバリデーション

Webアプリケーションの開発では、ユーザーが入力したデータの形式を検証するために正規表現が多用されます。メールアドレスの形式チェック、電話番号の桁数確認、パスワードの強度検証(英字・数字・記号の混在チェック)など、正規表現を使えば複雑な条件を簡潔に記述できます。ただし、メールアドレスのような複雑な仕様を完全に検証するには、正規表現だけでは不十分な場合もあるため、基本的な形式チェックとして使い、厳密な検証はサーバーサイドで行うことが推奨されます。

ログ解析とデータ抽出

サーバーのアクセスログやアプリケーションログから、特定のパターン(IPアドレス、タイムスタンプ、エラーコードなど)を抽出する際にも正規表現は欠かせません。大量のログデータの中から必要な情報だけを効率よく取り出すことで、障害の原因調査やアクセス分析を迅速に行えます。

ヒント:正規表現は非常に強力なツールですが、複雑なパターンは可読性が低くなりがちです。コードレビューやメンテナンスのことを考えて、必要に応じてコメントを付けたり、名前付きキャプチャグループ((?<name>...))を活用したりして、意図が伝わりやすいパターンを心がけましょう。このツールでパターンをテストしてから、実際のコードに組み込むことをおすすめします。