在这个网站上:http://softwarerecipes.blogspot.com/2011/01/powershell-script-for-fixing-subtitles.html。 有固定字幕文件偏移的脚本,如下所示:
SrtFixer.ps1 -Path' Movie.srt' -Offset' -00:00:26.700'但是不可用。
所以我在C#中找到了一个脚本(这里:http://www.codeproject.com/Articles/32834/Subtitle-Synchronization-with-C)
我的第一步是为以下结构编写正确的正则表达式:
2
00:00:01,775 --> 00:00:04,528
- I want you to admit what you are.
- You still refuse to see
我试试这个:
$file = "D:\subtitles\Hannibal - 02x10 - eng.srt"
$regex ='(?m)[0-9]{1,5}\n([0-9]{2}:[0-9]{2}:[0-9]{2}),([0-9]{3}) --> ([0-9]{2}:[0-9] {2}:[0-9]{2}),([0-9]{3})\n((.+\n)*)'
$text =get-content($file) -Raw
$text | Select-String $regex -AllMatches |
Foreach {$_.Matches} | Foreach {$_.Value}
正则表达式似乎是正确的(regexhero)但不是任何匹配。
你能帮助我吗?
修改
我的错误。正确的正则表达式
$regex ='(?m)[0-9]{1,5}\n([0-9]{2}:[0-9]{2}:[0-9]{2}),([0-9]{3})\s-->\s([0-9]{2}:[0-9]{2}:[0-9]{2}),([0-9]{3})\n((.+\n)*)'
但它没有用。
答案 0 :(得分:0)
正则表达式不正确,至少在使用The Regex Coach和示例文本进行检查时是正确的。这是因为([0-9]{2}:[0-9] {2}:[0-9]{2})
在时间戳内需要一些奇数间隔。删除它们可以为样本输入提供匹配。
话虽如此,如何获得内容的付费版本?那些通常都有良好的字幕。