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

Regex 用于替换字符第二次出现的正则表达式,regex,replace,Regex,Replace,我有以下格式的一些数据: MM:ss:mmm其中MM为分钟,ss为秒,mmm为3位毫秒,如: 05:23:236 我试图用一个点替换第二个冒号: 05:23.236 我想用一个regex模式在记事本++之类的编辑器中进行替换,我想到了 此正则表达式与我的表达式匹配: \d{1,2}:\d{1,2}:\d{1,3} 但是现在我怎么才能只得到第二次出现的冒号,这样我就可以用点替换它了 编辑:请注意,我处理的数据可能是1-2位数的分钟、1-2位数的秒和1-3位数的毫秒 :(\d{1,3})$

我有以下格式的一些数据:

MM:ss:mmm其中
MM为分钟
ss为秒
mmm为3位毫秒
,如:

05:23:236
我试图用一个点替换第二个冒号:

05:23.236
我想用一个
regex
模式在记事本++之类的编辑器中进行替换,我想到了 此正则表达式与我的表达式匹配:

 \d{1,2}:\d{1,2}:\d{1,3}
但是现在我怎么才能只得到第二次出现的冒号,这样我就可以用点替换它了

编辑:请注意,我处理的数据可能是1-2位数的分钟、1-2位数的秒和1-3位数的毫秒

:(\d{1,3})$
替换为:

.$1
上面所做的是选择最后一个
,后面是毫秒加1-3位数

试试这个:

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

您的正则表达式很好,您只需进行分组,然后通过再次调用来替换它们:

选择:

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

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


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

您使用的是什么语言?