首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >字幕判读

字幕判读
EN

Stack Overflow用户
提问于 2015-07-16 12:07:40
回答 3查看 1.8K关注 0票数 2

我需要解析一些srt文件,我正在寻找一个与时间部分相匹配的正则表达式(用于JAVA)。我想要的是逐行读取文件,如果行是数字或时间,则跳过它们。

例如:

代码语言:javascript
运行
复制
1
00:00:01,357 --> 00:00:03,323
You took this case
without running it by me.

2
00:00:03,359 --> 00:00:04,825
- Jessica--
- That's enough. Dump it.

我想和这些线相匹配

代码语言:javascript
运行
复制
00:00:03,359 --> 00:00:04,825

代码语言:javascript
运行
复制
2

提前感谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-16 12:11:59

匹配号码:

^\d+$

匹配时间

^d{2}:d{2}:\d{2},d{3}.*\d{2}:d{2}:d{2},d{3}$

对于这两种情况

(^\d+$)\d{2}:\d{2},d{3}.*\d{2}:\d{2}:\d{2},\d{3}$)

正如我在您的格式中看到的,数字在时间之前,所以您只需使用匹配时间获得行索引,并按索引-1和索引重新移动。

关于正则时间的更清楚

^d{2}:d{2}:\d{2},d{3}.*\d{2}:d{2}:d{2},d{3}$

开始

^

从课文开始

D{2}或0-9{2}

只有两位数

*或:{1}或{1}

只有一个逗号..。

,或,{1}或,{1}

只有一个逗号

D{3}或0-9{3}

只有三位数

.*

每件事,有没有价值,都是可以的。

过去:再次检查时间格式

$

文本结尾

这意味着从头到尾,文本必须符合这个条件。

票数 2
EN

Stack Overflow用户

发布于 2015-07-16 12:12:26

对于第一行00:00:03,359 -> 00:00:04,825或00:00:01,357 -> 00:00:03,323下面的代码可能是有用的。

代码语言:javascript
运行
复制
String strLine = "00:00:01,357 --> 00:00:03,323";
System.out.println(strLine.matches("\\d\\d:\\d\\d:\\d\\d,\\d\\d\\d --> \\d\\d:\\d\\d:\\d\\d,\\d\\d\\d"));
票数 0
EN

Stack Overflow用户

发布于 2015-07-16 12:21:01

您可以这样做以获取每个副标题的结束时间:

代码语言:javascript
运行
复制
\d{2}:\d{2}:\d{2},\d{3}$

雷吉斯住在这里。

解释:

代码语言:javascript
运行
复制
\d{2}:      # a two-digits number followed by a ":" character
\d{2}:      # ""
\d{2},      # a two-digits number followed by a "," character
\d{3}       # a three-digits number
$           # matching only at ending lines 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31453730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档