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

标签 regex capture-group

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

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

123456789ABCD00001DDD

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

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

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

\1\2\4\5

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

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 断言位置在前一个匹配的末尾或第一个匹配的字符串的开头。

关于regex - 如何获取捕获组的计数然后用特定字符替换字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59667127/

相关文章:

php - 在 HTML 字符串中间插入文本

c# - 正则表达式包含 [ :alnum:] POSIX character class did not match string with C#, 但在线工具评估正常

r - 在 R 的正则表达式中是否有等效的 "&"用于反向引用整个匹配?

正则表达式捕获部分文本,但如果找到模式则忽略其余部分

正则表达式 匹配捕获组内的文本

regex - sed - 使用捕获组打印翻译后的十六进制

python - 无法在 re.sub() repr 表达式的函数调用中使用 '\1' 反向引用捕获组

Java String.split() 正则表达式来分割数学表达式

regex - android 正则表达式和十进制格式

java - 捕获所有可能的路径参数 jax-rs regex