メインコンテンツへスキップ
FreeOnlineTools Go
日本語
説明

正規表現とは?完全な解説

FreeOnlineTools Team 著 · 2026-09-02を更新しました

簡単な回答

正規表現は、文字列のセットを記述するパターンです。リテラル文字 (それ自体と一致する) と特別な意味を持つメタ文字 (*、+、?、.、^、$、[]、()、{}、|、\) を使用します。正規表現は、検証、検索、抽出、置換に使用されます。無料の Regex Tester を使用して、ブラウザ内のテキストに対してパターンをテストします。

導入

正規表現 (regex または regexp) は、検索パターンを定義する一連の文字です。このパターンは、文字列検索アルゴリズムによってテキストの検索、一致、または置換に使用されます。正規表現は、1950 年代に形式言語理論 (Stephen Kleene) で誕生し、1970 年代に Unix テキスト ツール (grep、sed、awk) に採用されました。現在、正規表現は事実上すべてのプログラミング言語とテキスト エディターに組み込まれています。 Regex は強力で、電子メール形式を検証し、ログからデータを抽出し、複雑なパターンを見つけることができます。しかし、構文が緻密で読みにくいことで知られています。

ステップバイステップ

  1. リテラル文字とメタ文字を理解する

    リテラル文字 (a、b、1、@) はそれ自体と一致します。メタキャラクターには特別な意味があります: 。任意の文字に一致します。* は 0 個以上を意味し、+ は 1 つ以上を意味します。 0 または 1 を意味し、^ は開始に一致し、$ は終了に一致します。

  2. キャラクタークラスを学ぶ

    角括弧 [] は文字クラスを定義します。[aeiou] は任意の母音に一致し、[0-9] は任意の数字に一致し、[^0-9] は任意の非数字に一致します。短縮クラス: \d (数字)、\w (単語文字)、\s (空白)、およびそれらの大文字の否定。

  3. 数量指定子を使用する

    量指定子は、パターンが繰り返される回数を指定します: * (0+)、+ (1+)、? (0 または 1)、{n} (正確に n)、{n,} (n+)、{n,m} (n から m)。デフォルトでは貪欲です。追加 ?遅延マッチングの場合 (例: *?)。

  4. グループとアンカー

    括弧 () はキャプチャ グループを作成します。代替 |どちらかの側 (cat|dog) に一致します。アンカー ^ と $ は文字列の先頭と末尾に一致します。これらを使用して、単純なパターンから複雑なパターンを構築します。

例

電子メールのようなパターンに一致する

入力: Pattern: [a-z]+@[a-z]+\.[a-z]+

出力: 一致: alice@example.com、bob@test.org

電話番号の形式を一致させる

入力: Pattern: \d{3}-\d{3}-\d{4}

出力: Matches: 555-123-4567

キーと値のペアを抽出する

入力: Pattern: (\w+)=(\w+)

出力: Matches 'key=value' with group 1 as key, group 2 as value

よくある問題

  • 貪欲なマッチングは、可能な限り —.* のマッチングを過剰に消費します。使用 。*?遅延マッチングでは、最短の一致を見つけます。
  • 特殊文字のエスケープを忘れる — .、*、+、? などは特殊です。文字通りに一致させるには \ を使用します (例: \. はリテラルのドットに一致します)。
  • 壊滅的なバックトラッキング — ネストされた量指定子を含むパターン (例: (a+)+) は、特定の入力で指数関数的な時間がかかり、ReDoS 攻撃を引き起こす可能性があります。
  • オーバーマッチング - アンカー (^ と $) を使用しない場合、パターンはどこにでも一致します。文字列全体と一致するには、^...$ を使用します。

ヒント

  • シンプルに始めて、段階的に複雑さを加えていきます。複雑な正規表現を一度にデバッグするのは非常に困難です。
  • 正規表現テスターを使用して、サンプル テキストに対するパターンを実験します。リアルタイムで一致がハイライト表示されます。
  • 拡張モード (一部のエンジンでは /x フラグ) を使用して複雑な正規表現をコメント化するか、名前付き部分に分割します。
  • Regex Tester を使用すると、ブラウザで即座にパターンをテストできます。サインアップは不要で、完全にプライベートです。

関連ツール

関連ガイド

参考文献