如何获取捕获组的计数然后用特定字符替换字符?
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
您可以将此正则表达式与 \G
和正面前瞻结合使用:
(?:^([1-9]{9}[ABCD]{1,4})(?=0{1,5}\d{1,5}D*$)|\G)0
\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
如何获取捕获组的计数并将其替换为我指定的相同数量的字符?
例如这里是一个字符串...
123456789ABCD00001DDD
我的带有捕获组的正则表达式如下...
^([123456789]{9})([ABCD]{1,4})([0]{1,5})([0-9]{1,5})([D]*)$
当我使用 Notepad++ 之类的东西时,我想找到上面的内容并将其替换为...
使最终结果看起来像...
123456789ABCD 1DDD
您可以将此正则表达式与 \G
和正面前瞻结合使用:
(?:^([1-9]{9}[ABCD]{1,4})(?=0{1,5}\d{1,5}D*$)|\G)0
\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