用于在android中读取SRT文件的RegEx

Ayy*_*pan 4 java regex android

我想从 android 应用程序的字幕文件(.srt)中获取开始时间、结束时间和字幕。我正在使用正则表达式来提取内容。我将 .srt 文件放在 assets 文件夹中。但是该模式没有从文件中提取任何内容。它返回空值。regEx 中是否需要进行任何修改。下面给出的正则表达式代码和文件内容,

代码::

protected static final String nl = "\\\n";
protected static final String sp = "[ \\t]*";
Pattern pattern =Pattern.compile("(\\d+)" + sp + nl
                    + "(\\d{1,2}):(\\d\\d):(\\d\\d),(\\d\\d\\d)" + sp
                    + "-->" + sp + "(\\d\\d):(\\d\\d):(\\d\\d),(\\d\\d\\d)" + sp
                    + "(X1:\\d.*?)??" + nl + "((.|\\\\n)*?)" + nl + nl);
Run Code Online (Sandbox Code Playgroud)

文件内容::

2
00:00:02,373 --> 00:00:03,999
Ohh wooaah

3
00:00:06,190 --> 00:00:07,798
Ohh wooaah


4
00:00:09,743 --> 00:00:12,966
Ohh wooaah
Run Code Online (Sandbox Code Playgroud)

Fra*_*oth 5

下次,至少提供您尝试过的内容,顺便说一句,这里有一个关于 regexp 的非常好的教程:http : //www.regular-expressions.info/

String lineNumberPattern = "(\\d+\\s)";
String timeStampPattern = "([\\d:,]+)";
String contentPattern = "(.*\s.*)";

// the complete regexp : "(\\d+\\s)([\\d:,]+)( --> )([\\d:,]+)(\\s)(.*\s.*)"

String sampleLine = "2\n00:00:02,373 --> 00:00:03,999\nOhh wooaah\n";
Matcher matcher = Pattern.compile(lineNumberPattern + timeStampPattern + "( --> )" + timeStampPattern + "(\\s)" + contentPattern).matcher(sampleLine);

while(matcher.find()) {
    String start = matcher.group(2);
    String end = matcher.group(4);
    String content = matcher.group(6);
    // store those information somewhere
}
Run Code Online (Sandbox Code Playgroud)