テキストおよび日常ツール · テキスト ツールキット
検索と置換の正規表現キャプチャ グループ: $1、$2、$3 を使用して日付を並べ替えます
· 仕組み
正規表現 検索と置換 の日付
括弧が一致の一部をキャプチャする方法と、$1、$2、および $3 が古典的な ISO から日、月、年の日付の書き換えとその他のいくつかの並べ替えを使用して、それらを置換で再利用する方法を示します。
400 個の日付の順序が間違っています — 2024-01-02 を 02/01/2024 に手動で編集するのがキャプチャ グループの仕事である理由
英国のワークシートが日/month/year. を予期している場合、スプレッドシートのエクスポートでは ISO スタイルの年-月-日の順序で 400 の日付が残ることがあります。 `2024-01-02` を `02/01/2024` に手動で編集するのは時間がかかりますが、より大きなリスクは不一致です。1 つのスキップされた行または転置された数字は、レポートが配布されるまで存続する可能性があります。
検索と置換では、すべての日付を無関係な 400 個の文字列としてではなく、同じ配列の部分として扱うことができます。正規表現は年、月、日を識別しますが、置換ではキャプチャされた部分が別の順序で書き戻されます。元の数字が再利用されるため、値を再入力するのではなく、操作によって構造が変更されます。
括弧の内容 - 各グループが左から右に数値を取得する方法、および \d{4} と \d{2} が一致する内容
括弧はキャプチャ グループを作成します。 `(\d{4})-(\d{2})-(\d{2})` では、最初のグループは 4 桁をキャプチャし、2 番目のグループは 2 桁をキャプチャし、3 番目のグループは 2 桁をキャプチャします。 `\d` はこの JavaScript パターンの数字を意味し、`{4}` と `{2}` は各グループ内で必要な正確な繰り返し数を指定します。
エンジンが左から右に読み取るときに、グループは各開き括弧から番号を受け取ります。 `2024-01-02` の場合、グループ 1 は `2024`、グループ 2 は `01`、グループ 3 は `02` です。ハイフンは区切り文字と一致しますが、括弧の外側にあるため、取得された値として保持されません。
置換で $1、$2、$3 を使用 - 新しいセパレーターを使用して新しい順序で一致を再構築します
置換 `$3/$2/$1` は、3 番目のキャプチャ、スラッシュ、2 番目のキャプチャ、別のスラッシュ、および最初のキャプチャを挿入するように JavaScript に要求します。この例に適用すると、これらの参照は `02/01/2024` を生成します。ドル参照は置換指示であり、一致する日付にも表示される必要があるテキストではありません。
ToolAcre は、置換文字列を標準の JavaScript 文字列置換操作に渡します。そのソースは、`$1`、`$2`、`$3` などの番号付き参照を明示的にサポートしており、検索パターンはグローバルにコンパイルされます。このグローバル フラグが、最初の一致のみではなく、一致するすべての日付が 1 回の操作で書き換えられる理由です。
成功した例 — (\d{4})-(\d{2})-(\d{2}) を $3/$2/$1, に置き換え、行数と置換数を確認します
エクスポートされた列を貼り付け、正規表現をオンにし、検索に `(\d{4})-(\d{2})-(\d{2})` と入力し、置換に `$3/$2/$1` を入力します。 [すべて置換] を選択すると、最初に一致をカウントしてからそれらを書き換えるため、結果として、貼り付けたテキスト全体で変更された日付文字列の数が報告されます。
結果をスプレッドシートにコピーして戻す前に、その数値を予想される行数と比較します。カウントが低い場合は、空白または別の形式の日付を指します。カウントが大きいほど、他の場所でも同様のテキストが一致したことを意味します。このツールには置換プレビューがないため、カウントまたは出力で広範すぎるパターンが明らかになった場合は、「元に戻す」アクションを使用します。
さらなる並べ替え - 「姓、名」から「名、姓」への変更、および 2 列リストの列の交換
同じ原則により、各行に 1 つのコンマが確実に含まれている場合、`Surname, Forename` を `Forename Surname` に変更できます。`([^,]+), ([^\r\n]+)` を見つけて、`$2 $1` に置き換えます。ここで、各グループは、固定の桁数を想定するのではなく、既知の区切り文字の片側のテキストをキャプチャします。
2 列のスワップは、大まかな表現にもかかわらず、組み込みのテーブル操作ではありません。これは、貼り付けたテキストに信頼できる区切り文字があり、パターンが行の境界を安全に記述している場合にのみ機能します。名前内のカンマ、欠落しているフィールド、または一貫性のないタブがある場合は、一括置換が信頼できるようになる前に、クリーンアップまたはより正確なパターンが必要です。
入力に信頼できるセパレータがある場合にのみ、さらなる並べ替えが機能します
パターン内のドットはほぼすべての文字を意味するため、`(\d{4}).(\d{2}).(\d{2})` として記述された日付パターンでは、フィールド間にスラッシュ、スペース、または文字も受け入れられます。リテラルのドットを `\.` としてエスケープし、他のメタ文字が一致する必要がある場合はそれをエスケープします。無効な括弧または中途半端な括弧は、テキストを変更せずに報告されます。
グループの番号付けは、0 ではなく、1 から始まります。ドル記号には特別な置換意味もあります。`$&` は一致全体を挿入し、`$$` は 1 つのリテラルのドル記号を生成します。 ToolAcre は検索側のみをエスケープするため、この動作は正規表現モードがオフの場合にも適用されます。 JavaScript が置換文字列を処理する前に、置換文字列をエスケープしません。
これでカバーされないもの — ルックアップ テーブルが必要な名前付きグループ、後読み、および月の名前
番号付きグループは、一致にすでに存在するテキストを並べ替えることができますが、並べ替えではなく検索が必要なため、`Jan` を `01` に変換することはできません。この記事では、名前付きグループや後読みにも依存しません。その有用性とブラウザのサポートには、この単純なエクスポートのクリーンアップとは異なる選択肢が含まれます。
日付式は、カレンダーの真偽ではなく、形状をチェックします。 2 桁の数字がそれぞれの小さなグループを満たすため、`2024-99-88` と一致します。正確さが重要な場合は、スプレッドシートまたはソース システムの日付を検証します。検索と置換は、一貫した書式設定に適しており、キャプチャされた各月と日が有効であることを証明するためには適していません。
要点 — 1 つのパターン、1 つの置換、テキスト ツールキットですべての行を一度に修正し、結果が期待したものと異なる場合は元に戻すことができます。
キャプチャ グループは、1 つの一致した文字列を再利用可能な部分に変換します。統一日付列の場合、3 つのグループは元の年、月、日を保持しますが、`$3/$2/$1` はそれらを英国順に配置します。グローバル検索はすべての一致を処理し、報告された数により、変更する予定の行数を即座にチェックできます。
ワークフローをレビュー可能な状態に保ちます。エクスポートのコピーを保持し、それに適合する最も狭いパターンを使用し、カウントを比較し、いくつかの結果を検査し、証拠が期待と一致しない場合は元に戻します。適切な範囲の置換を 1 つ行うと、すべての数字の形をした値が自動的に有効な日付であるかのように装うことなく、反復的な編集を排除できます。