【发布时间】:2018-03-16 08:24:33
【问题描述】:
iOS 中的 NSRegularExpression 无法使用下面的正则表达式解析整个印地语 srt 文件:
(\\d+)\\n([\\d:,.]+)\\s+-{2}\\>\\s+([\\d:,.]+)\\n([\\s\\p{P}]*?(?=\\n{2,}|$))
上述表达式与英文字幕配合得很好。如果是印地语字幕,则函数后的结果
let matches = regex.matches(in:<SubtitleStringToParse>, options: NSRegularExpression.MatchingOptions(rawValue: 0), range: NSMakeRange(0, <SubtitleStringToParse.count>))
提供具有较小值的匹配数组,如预期的那样。如果假设实际上应该有 10 个匹配项,它只显示 8 个匹配项,其余 2 个丢失。只要有印地语字幕,我们就可以在结尾看到一些缺失的匹配项。
有什么方法可以解决这个问题,或者对于不同的语言,应该如何解析字幕以获得准确的匹配?
还有其他选择吗?
【问题讨论】:
-
谢谢@WiktorStribiżew。效果很好。非常感谢。我提到的正则表达式也有一些错误。正则表达式应该是 (\\d+)\\n([\\d:,.]+)\\s+-{2}\\>\\s+([\\d:,.]+)\ \n([\\s\\S]*?(?=\\n{2,}|$))
标签: ios swift regex parsing subtitle