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)
下次,至少提供您尝试过的内容,顺便说一句,这里有一个关于 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)
| 归档时间: |
|
| 查看次数: |
1381 次 |
| 最近记录: |