印地语字幕(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 文件)解析问题的主要内容,如果未能解决你的问题,请参考以下文章