正则表达式 处理srt

Posted jackvub

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式 处理srt相关的知识,希望对你有一定的参考价值。

处理srt的<font  color ="" > 所用的正则表达式为 <.*?>  而不是<.*>?

 

目标: 1 删除序号行  序号行只有一个数字代表scription片段的编号, 数字可能是一位也可能是多位

   2删除time stamp 行, 该行的标志是 00:00:21,660 --> 00:00:26,640

   3 删除空白行  

        4 删除格式控制注释  标志 Laura Boyd</font><font color="#E5E5E5"> I‘m a</font>

解决方案:

删除序号行与time stamp 行

^\d.*\s*\n可以同时删除行号 和time stamp

删除空白行

^\s*\n

删除格式控制注释

<.*?>

再加上正则表达式的  或 语句 | ,把三条语句结合到一块   

^\d.*\s*\n|^\s*\n|<.*?>

 

或语句 参照  http://www.nowamagic.net/librarys/veda/detail/1265

 

要点解析:

\n 和$的功能不同,用\n可以删除行,$ 不行

^\d.*\s*\n

^ 表示行开头 \d表示一位数字,.*表示任意长度字符 \s*表示任意长度,任意类型空格 \n换行  所以这句话为 每行由行首至换行内部,一个数字起始,后接任意长度字符,再接任意长度空格

^\s*\n由行首至换行,内部仅有任意长度空格

<.*?>  尖括号内部由任意长度字符串,?为最短匹配  

 

 

以下为试验版本,可看可不看

 


^\d{2}:.*  匹配time stamp  00:00:36,090 --> 00:00:40,260

 

^\d*\s*$

 

 

^\s*\n ^\s*$是有区别的,前者可以删除空行,后者只能匹配,不能删除

 

以上是关于正则表达式 处理srt的主要内容,如果未能解决你的问题,请参考以下文章

在linux中使用正则表达式重命名文件

印地语字幕(srt 文件)解析问题

可以将特定数字添加到一堆“时间”字符串中,在正则表达式中完成

从 .SRT 文件中增加或减少秒数

正则表达式与文件格式化处理

shell脚本——正则表达式Sed与Awk文本处理工具详解