正则表达式替换第二次出现的字符

时间:2014-06-10 12:54:02

标签: regex replace

我有以下格式的数据:

MM:ss:mmm 其中MM is minutesss is secondsmmm is 3 digit milliseconds,如:

05:23:236

我正在尝试用点替换第二次出现的冒号:

05:23.236

我想使用regex模式在Notepad ++等编辑器中进行替换,我想出了 这个正则表达式匹配我的表达式:

 \d{1,2}:\d{1,2}:\d{1,3}

但是现在我怎样才能获得second occurrence of colon所以我可以用dot替换它?

编辑:请注意,我正在使用的数据可能包含1-2位数字,1-2位数字和1-3位数毫秒

4 个答案:

答案 0 :(得分:5)

使用此正则表达式:

:(\d{1,3})$

替换为:

.$1

上面做的是选择最后:,后跟毫秒乘以1-3位。

DEMO

答案 1 :(得分:2)

试试这个:

  string pattern =  @":(?=\d{3})";
  string input = "your string";
  string replacement = ".";
  Regex rgx = new Regex(pattern);
  string result = rgx.Replace(input, replacement);

答案 2 :(得分:1)

你的正则表达式很好,你只需要做组,然后通过再次调用它们来替换它们:

的选择:

(\d{1,2}:\d{1,2}):(\d{1,3})

取代:

$1\.$2

答案 3 :(得分:0)

查找::(\d{1,3})$

替换为:.\1.$1,具体取决于您的正则表达式风格