说有字符串
A:B:C A:B C:B C:D:E C:D:E:F
我想将所有匹配模式“X:Y”的子字符串替换为“X:0:Y”,在本例中,它应该是:
A:B:C A:0:B C:0:B C:D:E C:D:E:F
是否可以使用一次正则表达式替换?
答案 0 :(得分:3)
替换:
(^|\s)(.):(.)(?=\s|$)
与
\1\2:0:\3
^|\s
- 白色空间线的开始
.
- 外卡
:
- 冒号
.
- 外卡
\s|$
- 白色空间或行尾
?=
是前瞻性的,否则A:B C:D
将不会匹配。
\1
- 您放在括号中的第一件事的匹配字符串 - (^|\s)
\2
- 您放在括号中的第二件事的匹配字符串 - 第一(.)
\3
- 您放在括号中的第三件事的匹配字符串 - 第二(.)
\1
等的常见替代方法是$1
等。
您也可以使用\w
(单词字符)代替.
作为示例。
修改强>
从问题标题看,您可能希望匹配一个或多个(+
)字符:
(^|\s)(\w+):(\w+)(?=\s|$)
编辑2:修正了正则表达式使用预测。