正则表达式 处理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*$是有区别的,前者可以删除空行,后者只能匹配,不能删除

时间: 2024-10-16 13:38:45

正则表达式 处理srt的相关文章

PHP正则表达式总结

.  匹配任何单个字符 比如a.c 可以是abc,asc,aac, $ 匹配字符串的结尾 比如t$ 可以使最后一个字符是t的字符串 ^ 匹配一行的开始 比如^a能够匹配以a为开头的字符串 * 匹配0或多个正好在他前面的字符. \  转移符,例如\* 用来匹配* [ ] 匹配[ ]中任何一个字符 [^c1-c2] 匹配[]除外的符号 [A-Za-z]匹配所有大小写 () 定义一个子模式 |  或运算 + 匹配1或多个正好在他之前的那个字符 {i} {i,j} 匹配指定数目的字符 执行函数: ere

VII Python(6)基础知识(re正则表达式)

正则表达式RE(regular expression)是一种小型的.高度专业化的编程语言,肉嵌在python中,通过re模块实现: 当发现有问题用正则表达式可解决时,于是将面临两个问题: RE模式被编译成一系统的字节码,再由匹配引擎(C写的)执行,RE语言相对小型和受限(功能有限,并非所有字符串处理都能用RE完成): re模块提供了顶级函数调用,常用的有:findall().sub().match().search().subn().split(): In [1]: import re In [

【Linux系列】【基础版】第四章 Shell基础之正则表达式

4. Shell基础之正则表达式     4.1 正则就是一串有规律的字符串         4.1 grep              4.1.1 格式: grep [-cinrvABC] 'word' filename             4.1.2 -c //count,表示行数             4.1.3 -i //不区分大小写             4.1.4 -n  //显示行号             4.1.5 -r  //遍历所有子目录             4

正则表达式中的逆向思维

人们的正常思维都是顺向的,那么逆向思维呢,特别是初学正则表达式的同学们,好不容易掌握了正则表达式的用法,再突然要你用逆向思维做题,会有很多不适应: 这里拿三道题,来做简单介绍: 1.经典例题取IP: [[email protected] ~]# ifconfig eth0|sed -nr '2s#^[^0-9]+(.*)[a-Z]{5,}.*#\1#gp' 10.0.0.200 2.调换/etc/passwd中最后一列和第一列的位置: [[email protected] ~]# head /p

JAVA正则表达式:Pattern类与Matcher类详解(转)

java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表现模式. Matcher 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查. 首先一个Pattern实例订制了一个所用语法与PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作

前端学PHP之正则表达式函数

前面的话 正则表达式不能独立使用,它只是一种用来定义字符串的规则模式,必须在相应的正则表达式函数中应用,才能实现对字符串的匹配.查找.替换及分割等操作.前面介绍了正则表达式的基础语法,本文将详细介绍正则表达式函数 匹配与查找 [preg_match()] preg_match()函数用来执行一个正则表达式匹配,搜索subject与pattern给定的正则表达式的一个匹配.返回pattern的匹配次数.它的值将是0次(不匹配)或1次,因为preg_match()在第一次匹配后将会停止搜索.preg

正则表达式

grep命令和正则表达式 一. 正则 : 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑.给定一个正则表达式和另一个字符串,我们可以达到如下的目的:1. 给定的字符串是否符合正则表达式的过滤逻辑(称作"匹配"):2. 可以通过正则表达式,从字符串中获取我们想要的特定部分. 正则表达式和通配符一样,也是一组特殊符号,通配符是由sh

java中的正则表达式

正则表达式 : 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串.将匹配的子串替换或者从某个串中取出符合某个条件的子串等. 一些字符所代表的意思: \        将下一字符标记为特殊字符.文本.反向引用或八进制转义符^       匹配输入字符串开始的位置$       匹配输入字符串结尾的位置.        匹配任何单个字符\s      空白(空格符.换行符.回车符.制表符)\S     非空白[]  

Python 正则表达式相关问题

这几天学习python,写正则表达式相关代码如下: import re print(re.search(r'(?<=<(\w+)>).*(?=<\/\1>)',"<b>ewuiiriur</b>sdksfkj").span()) 报错如下: raise error("look-behind requires fixed-width pattern")sre_constants.error: look-behind