Regex 替换记事本中的文本++;用正则表达式
我正试图在谷歌翻译中翻译一个字幕,但一切都顺利,只有一个问题,它删除了《泰晤士报》上的逗号Regex 替换记事本中的文本++;用正则表达式,regex,replace,notepad++,Regex,Replace,Notepad++,我正试图在谷歌翻译中翻译一个字幕,但一切都顺利,只有一个问题,它删除了《泰晤士报》上的逗号,。很好。我把它粘贴在记事本++上,并试图用正则表达式替换它。时间格式为: 00:00:44927--> 应该是 00:00:44927--> 所以我在Find what字段上尝试了这个正则表达式::(\d){2}(\d){3}(->) 在replace with字段中显示::$1,$2--> 搜索工作正常,但替换结果如下:00:00:47。似乎$1代表第一个匹配的(\d){2}的第一个数字,即4,第二个匹
,
。很好。我把它粘贴在记事本++上,并试图用正则表达式替换它。时间格式为:
00:00:44927-->
应该是
00:00:44927-->
所以我在Find what字段上尝试了这个正则表达式::(\d){2}(\d){3}(->)
在replace with字段中显示::$1,$2-->
搜索工作正常,但替换结果如下:00:00:47
。似乎$1
代表第一个匹配的(\d){2}
的第一个数字,即4
,第二个匹配的(\d){3}
即7
为什么?您需要将范围量词
{n}
放在捕获组中。通过将它们放置在捕获组之外,您告诉正则表达式引擎该组将被重复n次,而不是令牌\d
Find: :(\d{2})(\d{3})( -->)
Replace: :$1,$2$3
如果愿意,还可以使用lookaround断言来实现这一点
Find: :\d\d\K(?=\d\d\d)
Replace: ,
你可以这么做
(?<=\d\d)(\d{3})(?= -->)
(?)
并替换为,$1
您没有捕获
\d{3}
,只是捕获了\d
,这就是为什么您的正则表达式没有按预期工作。谢谢。你的解决方案很好。