如何获取捕获组的计数然后用特定字符替换字符?

How can I get the count of a capture group then replace the characters with a specific character?

如何获取捕获组的计数并将其替换为我指定的相同数量的字符?

例如这里是一个字符串...

123456789ABCD00001DDD

我的带有捕获组的正则表达式如下...

^([123456789]{9})([ABCD]{1,4})([0]{1,5})([0-9]{1,5})([D]*)$

当我使用 Notepad++ 之类的东西时,我想找到上面的内容并将其替换为...

使最终结果看起来像...

123456789ABCD 1DDD

示例位于 https://regex101.com/r/fykEnn/1

您可以将此正则表达式与 \G 和正面前瞻结合使用:

(?:^([1-9]{9}[ABCD]{1,4})(?=0{1,5}\d{1,5}D*$)|\G)0

RegEx Demo

\G 断言位置在上一个匹配的末尾或第一个匹配的字符串的开头。

bash 中,使用 sed:

$ echo 123456789ABCD00001DDD | sed -re 's/([123456789]{9})([ABCD]{1,4})([0]{1,5})([0-9]{1,5})([D]*)$/    /g'
123456789ABCD   1DDD

我认为你应该同时使用一个数字的后向断言和前向断言...
示例 ...

查找内容:(?<=[A-Z])\d{4}(?=\d[A-Z])
替换为:a space