印地语字幕(srt 文件)解析问题

Posted

技术标签:

【中文标题】印地语字幕(srt 文件)解析问题【英文标题】:Hindi subtitle (srt file) parsing issue 【发布时间】:2018-03-16 08:24:33 【问题描述】:

ios 中的 NSRegularExpression 无法使用下面的正则表达式解析整个印地语 srt 文件:

(\\d+)\\n([\\d:,.]+)\\s+-2\\>\\s+([\\d:,.]+)\\n([\\s\\pP]*?(?=\\n2,|$))

上述表达式与英文字幕配合得很好。如果是印地语字幕,则函数后的结果

let matches = regex.matches(in:<SubtitleStringToParse>, options: NSRegularExpression.MatchingOptions(rawValue: 0), range: NSMakeRange(0, <SubtitleStringToParse.count>))

提供具有较小值的匹配数组,如预期的那样。如果假设实际上应该有 10 个匹配项,它只显示 8 个匹配项,其余 2 个丢失。只要有印地语字幕,我们就可以在结尾看到一些缺失的匹配项。

有什么方法可以解决这个问题,或者对于不同的语言,应该如何解析字幕以获得准确的匹配?

还有其他选择吗?

【问题讨论】:

检查github.com/niklasberglund/swubtitles 谢谢@WiktorStribiżew。效果很好。非常感谢。我提到的正则表达式也有一些错误。正则表达式应该是 (\\d+)\\n([\\d:,.]+)\\s+-2\\>\\s+([\\d:,.]+)\ \n([\\s\\S]*?(?=\\n2,|$)) 【参考方案1】:

试试这个正则表达式。

"((\\d+)\\n([\\d:,.]+)\\s+-2\\>\\s+[\\d:,.]+\\n[\\s\\S]*?(?=\\n2,|$))"

【讨论】:

谢谢@Vipin。更新表达式是一件好事。它也很有效。

以上是关于印地语字幕(srt 文件)解析问题的主要内容,如果未能解决你的问题,请参考以下文章

用于 SRT 字幕的 Java API [关闭]

将字幕 (srt) 文件添加到现有 mkv 文件

解析.srt文件

.srt .smi 等字幕文件的 Emacs 语法高亮显示

MediaPlayer 的字幕功能不起作用(SRT 文件)

VLC无法显示SubRip(srt)文件中的字幕[关闭]