首页 文章

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

提问于
浏览
2

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

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

05:23:236

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

05:23.236

我想使用 regex 模式在记事本之类的编辑器中进行替换,我想出了这个正则表达式来匹配我的表达式:

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

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

EDIT: 请注意,我正在使用的数据可能有1-2位数分钟,1-2位数字和1-3位数毫秒

4 回答

  • 0

    使用这个正则表达式:

    :(\d{1,3})$
    

    替换为:

    .$1
    

    上面做的是选择最后的 : ,其后是毫秒乘以1-3位数 .

    DEMO

  • 2

    试试这个:

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

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

    选择:

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

    更换:

    $1\.$2
    
  • 1

    发现: :(\d{1,3})$

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

相关问题