![](/img/trans.png)
[英]Unable to match a multiline regex with Powershell (but it does work in C#)
[英]Powershell multiline regex: subtitles , How?
在此网站上: http : //softwarerecipes.blogspot.com/2011/01/powershell-script-for-fixing-subtitles.html 。 有用于修复字幕文件偏移的脚本,如下所示:
SrtFixer.ps1-路径“ Movie.srt”-偏移量“ -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)*)'
但这不起作用。
正则表达式是不正确的,至少在与Regex Coach和您的示例文本一起检查时才如此。 这是因为([0-9]{2}:[0-9] {2}:[0-9]{2})
在时间戳内需要一些奇数间距。 删除这些将为样本输入提供匹配。
话虽这么说,如何获得内容的付费版本? 那些通常具有良好的字幕。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.