正则表达式:如果有一个冒号,则添加另一个冒号

时间:2014-10-18 13:33:52

标签: java regex

我正在使用replaceAll()将单冒号改为双冒号,以此作为逃避"他们。但如果有人输入2个或更多的冒号,那么它就不会逃过冒号。

我尝试了这个/(:)([^::])/g作为我的正则表达式。但它取消了冒号后的章程,例如:

10:11:12变为10 :: 1 :: 2

1 个答案:

答案 0 :(得分:4)

搜索(?<!:):(?!:)并替换为::

其中(?<!:)是一个负面的后视,假设冒号前没有冒号,而(?!:)是一个假设结肠后没有冒号的loolahead。

lookarround

上的文档

<强>代码:

String s = "10:11:12 78:::78";
System.out.println(s.replaceAll("(?<!:):(?!:)", "::"));

<强>输出:

10::11::12 78:::78