用regex替换Notepad ++中的文本

时间:2014-10-12 02:40:14

标签: regex replace notepad++

我试图在Google翻译中翻译字幕,只需一个问题一切正常,它会从时间中删除逗号,。好吧,很好。我将它粘贴在Notepad ++上并试图用regex替换。时间格式为:

00:00:44927 -->

应该是

00:00:44,927 -->

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

这是替换为字段::$1,$2 -->

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

为什么?

2 个答案:

答案 0 :(得分:1)

您需要将范围量词{n}放在捕获组中。通过将它们放在捕获组之外,您可以告诉正则表达式引擎该组将重复第n次​​而不是令牌\d

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

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

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

答案 1 :(得分:1)

你可以做到

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

并替换为,$1

DEMO

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