正規表現パターンを JavaScript、PHP、Go、Java、Ruby、Python、C# 向けのコード例に変換します。スニペットをコピーしてアプリケーションに合わせて調整できます。
ブラウザ内でローカルに実行正規表現を入力し、7 つの対象言語から 1 つを選んで「コードを生成」を押すと、その言語の正規表現 API でパターンをコンパイルし、サンプル文字列に対してテストする短いプログラムが出力されます。
コード例はページ内で組み立てられます。検証時に生成で発生したネットワークリクエストは 0 件で、パターンはブラウザの外に出ず、接続が切れても動作します。
JavaScript: new RegExp("…") と pattern.test(text)。PHP: preg_match('~…~', $text, $matches) と結果の var_dump。区切り文字 ~ はパターン内でエスケープされ、リテラルのチルダが意味を保ちます。Go: regexp.Compile と MatchString、コンパイルエラーは panic で通知。Java: Pattern.compile と matcher(text).find()。Ruby: Regexp.new('…') と match?。Python: re.compile、search、bool()。C#: 逐語的文字列 @"…" と Regex.IsMatch(text, pattern)。
いずれのコード例もテスト文字列を text(PHP では $text)という変数に空文字列で保持し、パターンはその言語の文字列リテラル用にエスケープされます(バックスラッシュ、引用符、言語が必要とする \r と \n)。そのため say "hi"、a\~b、a~b などのパターンも対象エンジンにそのまま渡ります。各コード例は一致する入力と一致しない入力で実行し、期待どおりの結果を確認しています。
コード例は空文字列をテストするため、text を自分の入力に置き換えるまで大半は否定結果を出力します。検証は行いません。コンパイルできないパターン(孤立したバックスラッシュ、閉じていないグループ)は入力どおりにコピーされ、対象言語で失敗します。またパターン内に書いたフラグ(/abc/i)は、その言語のオプションに変換されずリテラル文字列のままです。
PHP は区切り文字 ~ を使う PCRE で動作し、PCRE には \uXXXX エスケープがありません。é のような文字には /u パターンで \x{00E9} を使います。Go は regexp でコンパイルし、先読み・後読みや後方参照を拒否するため、JavaScript や Python が受け付けるパターンでは生成プログラムが panic します。
このツールはパターン文字列をコピーするだけで、エンジン間の変換は行いません。同じパターンを 3 つのエンジンで実測すると、^b は Ruby では "a\nb" の内部に一致します(^ と $ が行にアンカーするため)が、JavaScript、Python、PHP では一致しません。\d は Python ではアラビア・インド数字の ٣ に一致し、PHP では /u 修飾子を付けた場合のみ一致します。Ruby と JavaScript の \d は ASCII の 0–9 に限られます。公開前に必ず対象言語でパターンを試してください。