日本語

テキストおよび日常ツール · テキスト ツールキット

リテラルまたは正規表現?検索用語内のドットがすべての結果を変える理由

· なぜそれが重要なのか

検索と置換 正規表現 テキスト編集

別々のリテラルおよび正規表現検索パスを取るドット区切りのバージョン番号
オリジナル ToolAcre ベクトル イラスト

正規表現でどの文字が意味を持つのか、「a.b」または「v1.2 (ベータ)」がパターンとして扱われると何が問題になるのか、すべてをエスケープするリテラル モードをデフォルトにする必要がある理由について説明します。

「v1.2」と一致する「v102」を検索 — 正規表現優先ツールが静かに句読点をワイルドカードに変換する方法

リリース ノートで `v1.2` を変更するサポート エージェントは、これらの 4 文字が 1 つのバージョン ラベルを識別することを合理的に期待する可能性があります。ただし、正規表現を有効にすると、ドットは改行を除く任意の文字を意味します。したがって、パターンは `v102`、`v1-2`、または `v1x2` と一致する可能性があり、すべて置換すると、要求されたリリースの一部ではなかったエントリが変更される可能性があります。

パターンが有効であるため、この障害は発生しません。意図的なワイルドカードとファイル名からコピーされた句読点を区別するためのエラー メッセージはありません。最初の警告は、予想外に大量の交換数である可能性があります。タスクが既知のテキストを正確に置き換えることである場合、句読点は検索エンジンへの指示ではなく、データである必要があります。

メタキャラクター — ドット、括弧、丸括弧、プラス、スター、疑問符、パイプ、キャレット、ドル、バックスラッシュ、およびそれぞれの機能

JavaScript 正規表現モードでは、ドットはワイルドカードです。角括弧は文字クラスを定義します。括弧はグループを作成します。さらに、スターと疑問符は繰り返しを制御します。そしてパイプは代替手段を提供します。複数行モードが有効になっていないため、このツールではキャレットとドル記号によってパターンがテキスト全体の先頭または末尾に固定されます。

バックスラッシュは後続の文字の読み方を変更し、中括弧は繰り返し回数を表すことができます。これらの記号は、正規表現文法が特別に扱う位置でのみ重要であるため、リストを記憶することは、ジョブに必要なモードを決定することよりも信頼性が低くなります。指定されたラベル、パスのフラグメント、またはファイル名と一致する場合は、文字通りに開始します。

JavaScript 正規表現モードで重要なメタキャラクター

リテラル モードでは、入力された内容を意味する検索が行われます。 ToolAcre は検索をコンパイルする前に正規表現のメタ文字をエスケープするため、`v1.2 (beta)` はドット、スペース、括弧自体と一致します。フレーズをキャプチャ グループが後に続くワイルドカードに変換せず、テキスト全体で正確に出現するすべての文字列を検索します。

そのエスケープは検索側でのみ発生します。置換フィールドは引き続き JavaScript 置換文字列ルールに従います。`$&` は一致したテキストを挿入し、`$$` は 1 つのドル記号を生成します。したがって、リテラル検索はテキストを識別するための安全なデフォルトですが、ドル記号を含む置換は、[すべて置換] を選択する前に慎重に検討する必要があります。

正規表現モード — 強力な機能が必要な場合、および個々の文字を自分でエスケープする方法

正規表現モードは、複数のフォームが 1 つのルールに一致する必要がある場合に便利です。パターンは、すべてのソース スペルをリストすることなく、数字の範囲、オプションの句読点、または代替文字をターゲットにすることができます。変動が意​​図的である場合にのみ Regex をオンにし、ドットの `.` など、通常の意味を保持する必要がある特殊文字をバックスラッシュでエスケープします。

このツールは、JavaScript 正規表現構文を使用してパターンをコンパイルし、常にグローバルに適用します。大文字と小文字を区別するをクリアすると、大文字と小文字を区別しない一致が追加されますが、複数行、ドットオール、スティッキー、および Unicode フラグは提供されません。無効な構文はテキストを変更せずに報告されます。有効ではありますが広すぎるパターンも引き続き実行されるため、コンパイルの成功は、一致セットが安全であることの証明にはなりません。

成功した例 — リテラル モードでリリース ノート全体の 'config.yml (old)' を置き換え、正規表現モードで同じことを試みて違いを確認します

`Load config.yml (old)`、`Archive configXyml old`、および `Keep config.yml (new)` を含むリリース ノートを検討してください。 Regex をオフにして、`config.yml (old)` を検索し、`config.yml (legacy)` に置き換えます。パターンがコンパイルされる前にドットと括弧がエスケープされるため、正確に最初のフレーズが変更されます。

正規表現をオンにして、同じエスケープされていない検索を送信します。ドットは別の文字を消費する可能性がありますが、括弧はリテラル括弧と一致するのではなく `old` をグループ化するため、意図した行は書かれたとおりに一致しなくなります。同等の正規表現には `config.yml (old)` が必要です。リテラル バージョンはより短く、明確で、この正確なテキストのタスクとよりよく連携しています。

よくある間違い - 検索ボックスの末尾のスペース、単語全体とリテラルの混同、置換カウントのチェックの忘れ

末尾のスペースは、検索フィールドでは視覚的な重要性がほとんどないにもかかわらず、リテラル モードでは保持されるため、見落としがちです。 `beta ` を検索しても、行末の `beta` とは一致しません。明確に表示される用語で置換がゼロであることが報告されている場合は、フィールドの境界を確認し、コピーされたテキストを周囲の散文から分離するためだけにスペースを追加することは避けてください。

単語全体はリテラルの別名ではありません。コンパイルされた検索は単語境界でラップされますが、ここでは ASCII ベースであり、句読点やアクセント付きの用語の周囲で失敗する可能性があります。また、実行のたびに置換カウントを検査し、予想外の場合は「元に戻す」を使用します。カウントは範囲に関する証拠であり、装飾的な成功メッセージではありません。

よくある間違い: スペース、単語全体の境界、置換構文

このページは、正規表現フラグの完全なガイドを提供するものではありません。 ToolAcre はグローバル マッチングと、オプションで大文字と小文字を区別しないマッチングを使用しますが、アンカーは依然として各行ではなく完全なテキストを参照します。インライン フラグ、POSIX クラス、または異なる構文を含むエンジンからコピーされたパターンは、コンパイルに失敗するか、ブラウザーで別の意味を示す可能性があります。

キャプチャ グループはサポートされているため、ツールの範囲外であると言うのではなく、アウトラインを修正する必要があります。 Regex モードでは、置換内の `$1`、`$2` 以降の番号を使用してグループを参照できます。この機能は、リテラル検索や限定されたフラグ コントロールとは別のものです。一致したテキストを再構築することが実際の目的である場合にのみ使用してください。

フラグはここでは制限されていますが、キャプチャ グループは置換でサポートされています

実際的なルールは単純です。既知のバージョン、ファイル名、製品ラベル、または文の断片を置き換える場合は正規表現をオフのままにしておきます。リテラル モードでは、特殊文字が自動的にエスケープされ、ターゲットを識別する句読点が保持されます。 Regex は、パターンが受け入れる必要があるバリエーションと、正確な検索が不十分な理由を説明できる場合にのみ有効にします。

編集したリリース ノートをコミットする前に、報告された数と予想される変更の数を比較し、結果を検査してください。 ToolAcre は無効なパターンをそのままにし、行き過ぎた有効なパターンを元に戻す機能を提供します。これらの安全対策は役立ちますが、リテラル作業にリテラル モードを選択すると、部分一致が事前に防止されます。