サンプルから正規表現を生成

注文番号、請求書番号、日付などの正規表現を手書きするのは手間がかかり、間違えやすい作業です。認識したい形式の例文字列を1つ貼り付けると、このツールが左から右へ読み取り、数字・大文字・小文字の各連なりを適切な長さの文字クラスに変換し、句読点や記号はリテラル文字として残します。出発点となるアンカー付きのパターンが得られるので、あとは手作業で調整できます。

仕組み

  1. 1

    サンプルを入力する

    認識したい形式を表す例文字列を1つ入力または貼り付けます。たとえば `Order #12345 placed on 2026-04-16` のように。

  2. 2

    パターンを生成する

    ツールはサンプルを1文字ずつ走査し、同じ種類の文字の連なりを、その長さを持つ文字クラスに置き換えます。

  3. 3

    内訳を読む

    パターンの下にある構成要素の一覧が各部分を説明するので、どの部分が数字・文字・リテラルテキストを認識したのかがわかります。

  4. 4

    コピーして調整する

    このパターンを出発点として使います。固定された長さや文字クラスを手作業で調整し、実際のデータの全範囲に合わせてください。

パターンの組み立て方

ツールはサンプルを左から右へ読み取ります。同じ種類の文字の連なりに出会うたびに、その連なりの長さに合わせた文字クラスを出力します。

  • 数字の連なりは \d{n} になります。n は数字の個数です
  • 大文字 A-Z の連なりは [A-Z]{n} になります
  • 小文字 a-z の連なりは [a-z]{n} になります
  • 単一の空白は \s、複数の空白は \s{n} になります
  • それ以外のもの(句読点、記号、アクセント付きや非ラテン文字)は、エスケープされたリテラル文字として残ります

完成したパターンは ^$ で囲まれ、一部分ではなく文字列全体を先頭から末尾まで認識します。

例文字列 Order #12345 placed on 2026-04-16 に対して、ツールは次を生成します。

/^[A-Z]{1}[a-z]{4}\s\#\d{5}\s[a-z]{6}\s[a-z]{2}\s\d{4}\-\d{2}\-\d{2}$/

Order は大文字1つに続く小文字4つ、12345\d{5}、日付 2026-04-16\d{4}\-\d{2}\-\d{2} になります。

できること・できないこと

  • 長さは固定です。 12345\d{5} になり、「1つ以上」ではなくちょうど5桁の数字を認識します。データで桁数が変わる場合は、{5} を手作業で +{3,8} のような範囲に変えてください。
  • 1つのサンプルから動作します。 与えた1つの文字列の構造を反映するので、複数の例からひとりでに一般化することはできません。最も代表的な文字列を与えてください。
  • 文字として数えられるのは A-Za-z だけです。 アクセント付きや非ラテン文字はリテラルとして残ります。より広い集合を認識させたい場合は、\w\p{L} のようなクラスに置き換えてください。
  • 正規表現ですべてを表現できるわけではありません。 括弧の対応づけのようなものは、いくつ例を与えても、どの正規表現の範囲も超えています。入れ子構造にはパターンではなくパーサーが必要です。

良い進め方

  1. 明確で代表的な1つのサンプルからパターンを生成します。
  2. 長さが変わる箇所で固定の長さを緩めます({5}+{3,8} に)。
  3. より大きな実データの集合とともに、パターンを正規表現テスターに貼り付けます。
  4. 認識すべきものすべてを認識し、認識すべきでないものを一切認識しなくなるまで調整します。

よくある質問

1つです。生成器は1つの例文字列を読み取り、その構造を反映します。あなたの形式を最もよく表す文字列を選び、そのほかのケースはパターンを手作業で広げてください。

ツールはサンプル内の正確な文字数を数えるため、5桁の数字は \d{5} になります。実データで桁数が変わる場合は、{5}+*、または {3,8} のような範囲に置き換えてください。

アンカーによって、パターンは文字列全体を先頭から末尾まで認識します。より長いテキストの中でパターンを探したい場合は、これらを外してください。

文字として認識するのは A-Za-z です。アクセント付き文字、キリル文字、CJK を含むそのほかの文字はリテラルとして残ります。より多くを認識させたい場合は、\w\p{L} のようなクラスに手作業で置き換えてください。

PCRE、JavaScript、Python、そしてほとんどのエンジンでそのまま動く標準の構文(\d[A-Z]{n})です。

関連ツール

このツールは他の言語でも利用できます