我需要解析一些srt文件,我正在寻找一个与时间部分相匹配的正则表达式(用于JAVA)。我想要的是逐行读取文件,如果行是数字或时间,则跳过它们。
例如:
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.
我想和这些线相匹配
00:00:03,359 --> 00:00:04,825
和
2
提前感谢!
发布于 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}
只有三位数
.*
每件事,有没有价值,都是可以的。
过去:再次检查时间格式
$
文本结尾
这意味着从头到尾,文本必须符合这个条件。
发布于 2015-07-16 12:12:26
对于第一行00:00:03,359 -> 00:00:04,825或00:00:01,357 -> 00:00:03,323下面的代码可能是有用的。
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"));
发布于 2015-07-16 12:21:01
您可以这样做以获取每个副标题的结束时间:
\d{2}:\d{2}:\d{2},\d{3}$
解释:
\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
https://stackoverflow.com/questions/31453730
复制相似问题