【问题标题】:Hindi subtitle (srt file) parsing issue印地语字幕(srt 文件)解析问题
【发布时间】: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


【解决方案1】:

试试这个正则表达式。

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

【讨论】:

  • 谢谢@Vipin。更新表达式是一件好事。它也很有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多