何かありそうな予感…
アイデアは、最初に、インデックスを作成するすべての場所にすべてのインデックスを配置することです。
Ñ123456Ñ
この例では、合計 6 つの項目が索引付けされるため、Ñ (またはルックアップ・テキストのどこにもない他の文字) で囲まれた 6 までの数字のすべてです。
次に、正規表現が開始点を持つように、手動で最初の '1' を作成します。これにより、アルゴリズムは最後にインデックス付けされたものを見つけ、それを使用して次のインデックスを決定できます。
探す: (Ñ)([0-9])(Ñ)(([^Ñ]|\r?\n)*?)(Ñ)([0-9]*)\2([0-9])([0-9]*)(Ñ)
交換: $1$2$3$4$6$8$10
テキストの例:
Ñ1Ñ
Ñ123456Ñ
Ñ123456Ñ
Ñ123456Ñ
Ñ123456Ñ
Ñ123456Ñ
1回交換後:
Ñ1Ñ
Ñ2Ñ
Ñ123456Ñ
Ñ123456Ñ
Ñ123456Ñ
Ñ123456Ñ
再度交換した後:
Ñ1Ñ
Ñ2Ñ
Ñ3Ñ
Ñ123456Ñ
Ñ123456Ñ
Ñ123456Ñ
「すべて置換」機能は、1 つずつ検索して置換する必要があるため、これには機能しませんが、仕事は完了すると思います。
次に、すべての一時的な Ñ 文字を削除するだけで済みます。
免責事項:「中間」テキストの改行に対処する部分 - \r?\n
- は Atom エディターで動作するように作成されているため、他の状況では微調整が必要になる場合があります。に含まれているため、実際には完全に削除できる[^Ñ]
と思いますが、他のシステムで機能するかどうかはわかりません。
2 桁以上のインデックスの場合:
探す: (Ñ)([0-9]{2})(Ñ)(([^Ñ]|\r?\n)*?)(Ñ)([0-9][0-9])*\2([0-9]{2})([0-9][0-9])*(Ñ)
交換: $1$2$3$4$6$8$10
テキストの例:
Ñ01Ñ
Ñ0102030405060708091011121314151617Ñ
Ñ0102030405060708091011121314151617Ñ
Ñ0102030405060708091011121314151617Ñ
...