【问题标题】:Replacing text in Notepad++ with regex用正则表达式替换 Notepad++ 中的文本
【发布时间】:2014-12-06 21:58:09
【问题描述】:

我正在尝试在谷歌翻译中翻译一个字幕,一切顺利,只有一个问题,它从时代中删除了逗号 ,。嗯,不错。我将它粘贴在 Notepad++ 上并尝试用正则表达式替换。时间格式为:

00:00:44927 -->

应该是

00:00:44,927 -->

所以我在 Find what 字段上尝试了这个正则表达式::(\d){2}(\d){3}( -->)

替换为字段上的这个::$1,$2 -->

搜索有效,但替换结果如下:00:00:47。似乎$1 代表第一个匹配(\d){2} 的第一个数字4 和第二个匹配(\d){3}7

为什么?

【问题讨论】:

    标签: regex replace notepad++


    【解决方案1】:

    您需要将范围量词 {n} 放在捕获组内。通过将它们放在捕获组之外,您就是在告诉正则表达式引擎该组将被重复第 n 次,而不是标记 \d

    Find: :(\d{2})(\d{3})( -->)
    Replace: :$1,$2$3
    

    如果您愿意,您还可以使用环视断言来实现此目的。

    Find: :\d\d\K(?=\d\d\d)
    Replace: ,
    

    【讨论】:

      【解决方案2】:

      你可以这样做

      (?<=\d\d)(\d{3})(?= -->)
      

      并替换为,$1

      DEMO

      您没有捕获\d{3},而只是捕获了\d,这就是您的正则表达式没有按预期工作的原因。

      【讨论】:

      • 也谢谢你。你的解决方案很好。
      猜你喜欢
      • 1970-01-01
      • 2012-04-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-23
      • 2014-06-04
      • 1970-01-01
      • 2011-03-07
      • 2012-01-25
      相关资源
      最近更新 更多