正则匹配 SRT字幕批量修改秒数后面的冒号为逗号

近来在线字幕遇到无法解析的问题,分析显示是因为不严格的srt时间格式导致无法解析,具体为时:分:秒,毫秒,秒后面应为逗号,但很多不严谨的软件输出成冒号,导致无法解析时间戳。

解决:因为最后都为三位数毫秒,正则搜索

:(?=\d{3})

即可匹配第三个冒号,进行替换即可解决。(感谢贴吧大佬wesyxlb提供思路)

另附批量删除双语字幕中的英文行:

\\N[\s\S]+

 

附正则说明

注意:Notepad++正则表达式字符串最长不能超过69个字符 \ 转义字符 如:要使用 “\” 本身, 则应该使用“\\” \t Tab制表符 注:扩展和正则表达式都支持 \r 回车符CR 注:扩展支持,正则表达式不支持 \n 换行符LF 注:扩展支持,正则表达式不支持 . 匹配任意 […]


注意:Notepad++正则表达式字符串最长不能超过69个字符

\   转义字符  如:要使用 “\” 本身, 则应该使用“\\”

\t  Tab制表符  注:扩展和正则表达式都支持

\r  回车符CR   注:扩展支持,正则表达式不支持

\n  换行符LF   注:扩展支持,正则表达式不支持

.  匹配任意一个字符

^ 其右边的表达式被匹配在行首。如:^A匹配以“A”开头的行

$ 其左边的表达式被匹配在行尾。如:e$匹配以“e”结尾的行

|  或运算符,匹配表达式左边和右边的字符串。如:ab|bc匹配“ab”或“bc”

[] 匹配列表中任意单个字符。如:[ab]匹配“a”或“b”;[0-9]匹配任意单个数字

a

[^] 匹配列表之外的任意单个字符。如:[^ab]匹配“a”和“b”以外的单个字符;[^0-9]匹配任意单个非数字字符

* 其左边的字符被匹配任意次(0次或多次)。如:be*匹配“b”,“be”或&ladquo;bee”

+ 其左边的字符被匹配至少一次(1次或多次)。如:be+匹配“be”或“bee”,但不匹配“b”

? 其左边的字符被匹配0次或者1次。如:be?匹配“b”或“be”,但不匹配“bee”;\r?\n匹配行结尾符

() 影响表达式匹配的顺序(类似C++的小括号会影响表达式运算顺序),并且如:([a-z]bc)smn\1匹配“tbcsmntbc”;另见:看下文的示例

{} 指定前面的字符或分组的出现次数  如:abc{3}匹配abccc;a(bc){2}匹配abcbc

\d 匹配一个数字字符。等价于:[0-9]

\D \d取反,匹配一个非数字字符。等价于:[^0-9]

\s 匹配任意单个空白字符:包括空格、制表符等(注:不包括换车符和换行符)。等价于:[ \t]

\S  \s取反的任意单个字符。

\w 匹配包括下划线的任意单个字符。等价于:[A-Za-z0-9_]

\W \w取反的任意单个字符。等价于:[^A-Za-z0-9_]

\b 匹配单词起始处或结尾处  如:\bin匹配int,但不匹配sing

示例1

123abcfg
abc
abcd

替换成:

123hello
hello
hello

方法 -- 查找串:abc.*$     替换串:hello

示例2

123abcfg
abc
abcd

替换成:

123@abcfg@
@abc@
@abcd@

方法 -- 查找串:(abc.*)$     替换串:@\1@

示例3

str[1]abc[991]
str[2]abc[992]
str[11]abc[993]
str[222]abc[996]

替换成

god[991]
god[992]
god[993]
god[996]

方法1 -- 查找串:str\[[0-9]+\]abc\[([0-9]+)\]     替换串:god[\1]

方法2 -- 查找串:str\[([0-9]+)\]abc\[([0-9]+)\]  替换串:god[\2]

删除所有空行

step1:a. 选择正则表达式  b. 查找串:^[ \t]*$    替换串:空

step2:a. 选择扩展(\n,\r,\t,\0,\x...)  b.  查找串:\r\n\r\n   替换串:\r\n    注:多次点击替换,直到没有可替换的字串

posted @ 2023-05-15 09:38  帅哥在此  阅读(129)  评论(0编辑  收藏  举报