我想我可能有什么...
这个想法是首先将每个索引放在您想要索引的每个位置:
Ñ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Ñ
Ñ2Ñ
Ñ123456Ñ
Ñ123456Ñ
Ñ123456Ñ
Ñ123456Ñ
再次更换后:
Ñ1Ñ
Ñ2Ñ
Ñ3Ñ
Ñ123456Ñ
Ñ123456Ñ
Ñ123456Ñ
“全部替换”功能对此不起作用,因为它必须逐个查找和替换,但我认为它可以完成工作。
然后你只需要删除所有临时 Ñ 字符就可以了。
免责声明:解决“中间”文本中的换行符的部分 - \r?\n - 用于 Atom 编辑器,因此可能需要针对其他情况进行一些调整。我相信它实际上可以完全删除,因为它包含在 [^Ñ] 中,但我不确定它是否适用于其他系统。
对于多于一位的索引:
查找: (Ñ)([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Ñ
...