【问题标题】:Regex to replace second occurrence of a character正则表达式替换字符的第二次出现
【发布时间】:2014-06-10 12:54:01
【问题描述】:

我有一些数据格式如下:

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 位毫秒

【问题讨论】:

  • 你使用什么语言?

标签: regex replace


【解决方案1】:

使用这个正则表达式:

:(\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
      

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 2011-06-06
          • 1970-01-01
          • 1970-01-01
          • 2018-02-27
          • 1970-01-01
          • 2023-02-08
          • 1970-01-01
          • 1970-01-01
          • 2019-09-25
          相关资源
          最近更新 更多