正規表現テスター
自分のテキストに対して正規表現を試し、各マッチの位置とキャプチャグループを一覧表示します。置換モードで書き換え、抽出モードでグループを行ごとに取り出せます。
パターンを入力してテキストを貼り付けると、すべてのマッチが位置とキャプチャグループとともに強調表示されます。置換モードに切り替えればテキストを書き換えられ、抽出モードでは1つのキャプチャグループを行ごとに取り出せます。コードに組み込む前にパターンを確認する最短の方法です。
エンジンはブラウザが使うJavaScriptの正規表現なので、名前付きグループ、先読み、最短一致の量指定子を含め、Nodeやブラウザのコンソールで得られる結果と同じになります。全体検索、大文字小文字を区別しない、複数行、dot-all、Unicodeのフラグが使えます。暴走したパターンはタブを固まらせずに停止します。
正規表現をテストする方法
パターンを入力し、フラグを設定します
テスト対象のテキストを貼り付けます
マッチを確認するか、置換・抽出モードを使います
よくある質問
どの正規表現エンジンが使われますか?
JavaScript(ECMAScript)で、お使いのブラウザやNode.jsと同じエンジンです。PCRE、Python、Java向けに書かれたパターンは多少の修正が必要なことがあります。独占的量指定子や再帰はこのエンジンの機能ではありません。
パターンが停止したのはなぜですか?
壊滅的なバックトラッキングが原因で、長い非マッチ文字列に対する(a+)+のような入れ子の量指定子でよく起こります。このツールはタブを守るため一定の反復回数で処理を止めます。パターンを単純化するか、位置を固定してください。
テキストを置換するには?
置換モードに切り替えて置換文字列を入力します。$1、$2、$<name>でキャプチャグループを挿入できるので、日付の書式変更、フィールドの入れ替え、ログの整形に使えます。
抽出モードは何をしますか?
マッチ全体ではなく、1つのキャプチャグループを1行ずつ出力します。長いテキストからメールアドレス、URL、IDを取り出すときにまさに便利な形です。
パターンで改行は扱えますか?
複数行またはdot-allのフラグを有効にした場合だけです。既定では.は改行にマッチしないため、1行では動くパターンが段落では失敗するよくある原因になります。
テキストはアップロードされますか?
いいえ。マッチングは端末内で実行されるので、実際のログデータや顧客情報を含むテキストでも安心して使えます。
概要
| 入力 | テキスト |
|---|---|
| 複数ファイル | いいえ |
| 実行場所 | ブラウザ内で実行 - ファイルはアップロードされません |
| オフラインでも動作 | はい — ページを読み込んだ後 |
| 料金 | 無料・登録不要・透かしなし |
変換が静かに壊れるところ
変換のバグの多くは構文ではなく意味の問題です。郵便番号のCSV列は、表計算ソフトが数値だと推測した瞬間に先頭のゼロを失います。長いIDは浮動小数点の精度を超えてしまいます。日付は、日が先か月が先かによって意味が変わります。JSONのキーには順序がありませんが、配列にはあります。キーを並べ替えるツールは何も変えませんが、配列を並べ替えるツールはデータを変えてしまいます。Unicodeも落とし穴です。テキストはUTF-8やUTF-16、あるいはBOM付きで届くことがあり、推測を誤ったデコーダーはアクセント付きの文字を文字化けに変えてしまいます。変換を信用する前に、最初と最後の行、先頭にゼロがあるフィールド、引用符・カンマ・改行を含むフィールドを抜き取り検査してください。
データ形式の選び方
JSONは、APIが返すものやプログラムが読み取るものの既定の選択です。入れ子構造、数値、真偽値、nullを自然に扱え、どの言語でもパースできます。CSVはより小さく、表計算ソフトでそのまま開けますが、入れ子を表現する方法がなく、区切り文字、引用符、文字コードに関する共通規格もありません。変換がうまくいかないのはまさにこの点です。XMLは冗長ですが、属性、混在コンテンツ、スキーマを扱えるため、文書形式や既存の連携では今も主流です。YAMLは設定ファイルにとって最も読みやすい形式ですが、空白に敏感で、型の自動変換が意外な結果を生みます(「no」がfalseになったり、1.10のようなバージョンが1.1になったりします)。見た目が最もよいものではなく、利用する側のツールが好む形式を選んでください。