在TextPad中以递增顺序替换数字的正则表达式

时间:2018-12-21 00:22:05

标签: regex notepad++ textpad

我想在TextPad中使用正则表达式替换增量编号。我有下面的代码,我想在标签<EndToEndId></EndToEndId>之间增加数字,数字应该保持8位。

        <PmtId>
           <EndToEndId>80000001</EndToEndId>
        </PmtId>
        <PmtTpInf>
              <Prtry>PM</Prtry>
        </PmtTpInf>
       <PmtId>
       <PmtId>
           <EndToEndId>80000002</EndToEndId>
        </PmtId>
        <PmtTpInf>
              <Prtry>PM</Prtry>
        </PmtTpInf>
       <PmtId>
       ......
       <PmtId>
           <EndToEndId>800000010</EndToEndId>
        </PmtId>
        <PmtTpInf>
              <Prtry>PM</Prtry>
        </PmtTpInf>
       <PmtId>

我尝试自己提出解决方案,但是在80000009之后,它给出的是800000010,即9位数字。

我在TextPad的查找和替换选项中提供了以下正则表达式。

查找内容:(<EndToEndId>).*?(</EndToEndId>) 替换为:(<EndToEndId>)\i(</EndToEndId>)

我使用Notepad++ incrementally replace中的Notepadd ++在Stackoverflow上搜索了类似的解决方案  但是当还有其他标签,例如<PmtId>, <PmtTpInf>

时,它不会给出增量编号

我已经尝试了很多,现在问Stackoverflow,请您帮我解决这个问题。谢谢。

1 个答案:

答案 0 :(得分:1)

做两遍。

您当前正在执行的第一遍,结果如下:

80000001
80000009
800000010
800000099
8000000100
8000000999

然后第二遍更正长度:

Search:  80+(\d{6})\b
Replace: 8$1

从上述示例中间输出中得出以下结果:

8000001
8000009
8000010
8000099
8000100
8000999