正規表現置換:キャプチャグループでテキストを並べ替える
年、月、日を再入力せずに交換し、一致する日付が無効になる理由を確認します。
2026-10-15 を 15/10/2026 に変更するには、年・月・日をそれぞれ別々にキャプチャし、そのキャプチャを別の順序で配置します。日付ごとに新しい置換文字列を入力する必要はありません。
この例はテキストの形を変えるだけです。各日付が実際に存在するかどうかはチェックしません。この違いは、結果をスプレッドシートで使う場合や公開する場合に重要です。
不正な日付を含む小さなサンプルから始める
Regex playground を開き、テキストをテスト に以下を貼り付けます:
Launch: 2026-10-15
Review: 2026-11-02
Invalid: 2026-99-99
Short: 2026-1-5
正規表現 には、スラッシュ区切りなしで次のパターンを入力します:
\b(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})\b
3つの名前付きグループが、4桁・2桁・2桁の数字をそれぞれキャプチャします。単語境界により、長い単語文字列の途中でマッチするのを防ぎますが、カレンダーの検証機能はありません。
オプション で すべての一致を検索 を有効にしたままにします。これは g フラグです。3つのマッチが表示されるはずです。最後の行の1桁の月と日はパターンに合いません。
置換文字列でキャプチャの順序を並べ替える
置換 を選択し、置換後の文字列 に以下を入力します。スマートフォンの場合は、まず 結果 を開いて置換ビューに移動します。
$<day>/$<month>/$<year>
置換プレビューは次のようになるはずです:
Launch: 15/10/2026
Review: 02/11/2026
Invalid: 99/99/2026
Short: 2026-1-5
不正な日付も同様に変更されました。数字を数えるだけのパターンでは、月の日数を知ることはできません。カレンダーの妥当性が重要な場合は日付パーサーを使用し、入力日付が有効であることがわかっていて表示形式だけを変えたい場合はこの置換を使用してください。
すべての一致を検索 を無効にすると、最初の日付だけが変更されます。ツールのマッチ数は3から1に減ります。置換が最初の出現で止まったように見える場合は、パターンを書き直す前にそのフラグを確認してください。
番号付きグループも使える
より短いパターンにするには、名前を削除します:
\b(\d{4})-(\d{2})-(\d{2})\b
そして、次の置換文字列を使用します:
$3/$2/$1
このサンプルでは同じ出力になります。グループ番号は、開き括弧のキャプチャの左から右への順序に従います。後でパターンを編集する予定がある場合は、名前付きグループの方が保守しやすいです。
プレイグラウンドはJavaScriptの置換構文を使用します。置換フィールドでは、$1 は最初のキャプチャを挿入し、$<year> は名前付きキャプチャを挿入し、$& はマッチ全体を挿入し、$$ はリテラルのドル記号を挿入します。MDNの置換リファレンス にこれらの形式がリストされています。他のエディタや正規表現エンジンでは、異なる置換表記を使用する場合があります。
ソースを保持し、例外を検査する
サンプル入力、全マッチ出力、最初のマッチのみの出力 をダウンロードして比較してください。設定ファイル にはパターンと置換文字列が保存されています。そのJSON内の二重バックスラッシュは文字列エスケープであり、パターンフィールドに貼り付ける追加のバックスラッシュではありません。
2026年10月15日に、これらの例をプレイグラウンドと同じ評価関数で実行しました。両方のキャプチャスタイルで同一の出力が得られました。グローバルフラグをオフにすると1つのマッチが変わり、不正な日付は依然としてマッチしました。結果記録 には、これらのチェックとファイルのハッシュが含まれています。
実際のドラフトでは、変更されていないコピーを保持し、テストに変更されるべきでない行をいくつか含めてください。もっともらしく見えるプレビューは、すべての置換が正しいという証拠にはなりません。