0

说有字符串

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

是否可以使用一个正则表达式替换来做到这一点?

4

1 回答 1

3

代替:

(^|\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:固定正则表达式以使用前瞻。

升压测试

于 2013-03-27T18:04:25.950 回答