说有字符串
A:B:C A:BC:B C:D:EC:D:E:F
我想将所有匹配模式“X:Y”的子字符串替换为“X:0:Y”,在这个例子中,它应该是:
A:B:C A:0:BC:0:B C:D:EC:D:E:F
是否可以使用一个正则表达式替换来做到这一点?
代替:
(^|\s)(.):(.)(?=\s|$)
和
\1\2:0:\3
^|\s
- 空白行的开头
.
- 通配符
:
- 冒号
.
- 通配符
\s|$
- 空白或行尾
?=
是先行的,否则A:B C:D
不会同时匹配。
\1
- 你放在括号中的第一件事(^|\s)
\2
的匹配字符串 - 你放在括号中的第二件事的匹配字符串 - 1st (.)
\3
- 你放在括号中的第三件事的匹配字符串 - 2nd(.)
等的常见替代方法\1
是$1
等。
您也可以使用\w
(word character) 代替.
您的示例。
编辑:
从问题的标题来看,您可能想要匹配一个或多个 ( +
) 单词字符:
(^|\s)(\w+):(\w+)(?=\s|$)
编辑 2:固定正则表达式以使用前瞻。
升压测试。