求两句正则表达式语句,用于解析字幕文件的。解决思路

求两句正则表达式语句,用于解析字幕文件的。
我需要得到字母里面的时间和text语句,“00:14:59,752 --> 00:15:01,066” , “I'll be honest,” ,要这两个。我用的正则库是ATL的CAtlRegExp。

第一类是srt字幕,

247
00:14:53,256 --> 00:14:56,979


248
00:14:59,752 --> 00:15:01,066
I'll be honest,

249
00:15:01,066 --> 00:15:04,497
there wasn't a whole lotta crime fighting in those first few weeks.


第二类是ass字幕:

Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,00:00:39.45,00:00:41.61,*Default,,0000,0000,0000,,(北蒙古)\N
Dialogue: 0,00:01:39.93,00:01:43.59,*Default,,0000,0000,0000,,打发保姆,爸爸回家了\N

------解决方案--------------------
因为没做过, ATL方面的正则,所以进来接分,另外对lz这种自己解决,并放出解决方案的行为表示赞赏,我是这里的版主,正在看又什么可以奖赏一下lz。
------解决方案--------------------
支持下楼主,前几天刚做了ASS的解析
不过是在C#里面,而且没用正则,主要原因是不会正则
------解决方案--------------------
引用:
弄懂了,下面是我写的正则表达语句,希望对其他人有帮助,也希望高手能指点一下是否有漏洞。

进来就有分 ~~

//SRT字幕示例
//1
//00:00:26,942 --> 00:00:31,561
//Guardian of the Universe. Protector against the forces of evil
#define SRT_TEMPLETE L"{{\\z}\r\n{[0-9][0-9]}:{[0-9][0-9]}:{[0-9][0-9]},{[0-9][0-9][0-9]} --> {[0-9][0-9]}:{[0-9][0-9]}:{[0-9][0-9]},{[0-9][0-9][0-9]}\r\n{[^\r\n\\z]+}\r\n}"

//ASS字幕示例
//Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
//Dialogue: 0,00:00:39.45,00:00:41.61,*Default,,0000,0000,0000,,(北蒙古)\N
#define ASS_TEMPLETE L"{Dialogue:[ \\t]+\\z,{\\z}:{\\z}:{\\z.\\z},{\\z}:{\\z}:{\\z.\\z},\\*\\w,[ \\t]*,\\z,\\z,\\z,[ \\t]*,{[^\r\n]+}\r\n}" //{[A-Za-z0-9\u4E00-\u9FA5]+}

简单看了一下你的第一个正则,在判断时间格式方面还是不够严谨,
抛砖引玉:

{[01][0-9]
------解决方案--------------------
2[0-3]}:{[0-5][0-9]}:{[0-5][0-9]},{[0-9]{3}} --> {[01][0-9]
------解决方案--------------------
2[0-3]}:{[0-5][0-9]}:{[0-5][0-9]},{[0-9]{3}}
------解决方案--------------------
这是我对第一个正则的修改:

{{\\z}\r\n{[01][0-9]
------解决方案--------------------
2[0-3]}:{[0-5][0-9]}:{[0-5][0-9]},{[0-9]0-9]0-9]} --> {[01][0-9]
------解决方案--------------------
2[0-3]}:{[0-5][0-9]}:{[0-5][0-9]},{[0-9]0-9]0-9]}\r\n{[^\r\n\\z]+}\r\n}
------解决方案--------------------
我发现了点问题,SRT字幕解析的这条语句无法找到字幕为 空行 或者 多行的情况。
------解决方案--------------------
你要的哪些数据是通过正则表达式【提取】的吗?
我以前就想用这个东西,分析json串,提取需要的东西,但不知道怎么弄,也不知道能不能弄。。。
------解决方案--------------------
引用:
{{\\z}\r\n{[01][0-9]
------解决方案--------------------
2[0-3]}:{[0-5][0-9]}:{[0-5][0-9]},{[0-9]0-9]0-9]} --> {[01][0-9]
------解决方案--------------------
2[0-3]}:{[0-5][0-9]}:{[0-5][0-9]},{[0-9]0-9]0-9]}\r\n{[^\r\n\\z]*}\r\n}

现在最后的问题就是这句正则表达式没法解析SRT字幕有多行的情况,请高手指教。 ASS字幕都是一行,以“\N”代表分行,比较好解决。

Try:

{{\\z}\r\n{[01][0-9]
------解决方案--------------------
2[0-3]}:{[0-5][0-9]}:{[0-5][0-9]},{[0-9]0-9]0-9]} --> {[01][0-9]
------解决方案--------------------
2[0-3]}:{[0-5][0-9]}:{[0-5][0-9]},{[0-9]0-9]0-9]}{\r\n{[^\r\n\\z]*}}+}
------解决方案--------------------
接楼上
稍微修改
{{\\z}\r\n{[01]?[0-9]
------解决方案--------------------
2[0-3]}:{[0-5]?[0-9]}:{[0-5]?[0-9]},{[0-9][0-9][0-9]} --> {[01]?[0-9]
------解决方案--------------------
2[0-3]}:{[0-5]?[0-9]}:{[0-5]?[0-9]},{[0-9][0-9][0-9]}{\r\n{[^\r\n\\z]*}}+}