现在的情况是这样的。
1、我在微软Microsoft Virtual Academy网站上下载教学视频,视频下载下来后发现没有中文字幕,但是微软的网站上播放时候是有字幕的,通过查看网页源码我把字幕文件下载了下来。
2、ok现在我有.mp4视频文件和字幕文件.txt。问题来了,我用播放器播放视频的时候并不会自动加载字幕,手动加载字幕文件又提示无效字幕文件。
3、网站查找资料得知,微软网站上的字幕文件格式为WEBVTT格式,修改文件名为.vtt格式。打开视频文件仍然无法加载字幕。。。现在我只得把.vtt格式字幕转换为.srt字幕格式了。。。
问题来了。我通过notepad++的正则 已经把vtt字幕文件转换成下图这样
而最终需要变成这样:
用正则删除换行啥的我都知道怎么操作,现在的问题是 如何 在正则匹配到字符串后做替换操作的时候不但要自动计数还要把这个计数替换到被替换的字符串里去。
换个话说就是被替换的字符串里有一个字符是累加变动的。
有高手来帮帮忙不? ^^
如果是我,我就这么干。1.合并所有行到一行,ctrl+j。2.时间前(这里用到正则,不过不难)插入换行 3.复制到excel里,前面空一列给行号,然后向下一拉,嘿嘿 4.复制出来到文本编辑器再做换行处理,时间后插入回车换行。据我所知,通用正则没有计数器,要自动化必须写代码。######还是各种工具混搭实用啊~ 谢了哈 ^o^######
我现在的想法是通过下面这段正则找到字幕文件里的时间戳那行+最后结尾看不见的回车换行
([0-9]{2}:[0-9]{2}:[0-9]{2}[.][0-9]{3} --> [0-9]{2}:[0-9]{2}:[0-9]{2}[.][0-9]{3})\r\n
然后做替换的时候把匹配时候的计数添加到里面去,顺便删除掉时间戳后面看不见的回车+换行
计数\r\n\1
问题。。。这个计数怎么写来着。。。手头没书,又在外地出差。。。so 来找高手了。。。
######看看测试效果:
还不错。。。问题是这个数字1 我是要会自动累加的。。。啊 啊 啊 ~ ~ ~
######。。。这尼玛是要我写脚本的节奏啊
哎~~~就没个高手来支招么?
######回复 @dreamhack : 麻烦啊 我现在用的windows系统哎,再搞个虚拟机用shell多累。。。######那用shell呗,sed和awk都行,简单的话:cat | grep######这个问题和“正则表达式”没关系,而是和“编辑器”相关。如果你把解决方案框死在notepad++这个工具的话,只能去找找看有没有相应的插件了;否则,可以看看我以前发的一篇没人看的帖子:http://www.oschina.net/question/58387_108493######回复 @ipenglei : 那你可以试试Emacs######还是写个脚本吧。。。主要是需要转换的文件有好几个。 我就是不想限定死工具,所以才想用纯正则转换 达到 字幕格式的 转换。。。######BTW,shell和emacs都有Windows版本,无需装虚拟机######<?php $text=<<<T 00.00.02.350 [音乐] 00.00.18.130 >> xx 00.00.19.440 >> oo T; //echo $text; $index=1; echo preg_replace_callback("/(?:\d{2}\.){3}\d{3}/",function($x) use(&$index) { return $index++."\n".$x[0]; },$text);
var t = 0; str.replace(/[\n\b](\d\d:\d\d:\d\d\.\d\d\d\s-->\s\d\d:\d\d:\d\d\.\d\d\d)/g,function(match,m1){return (t++ ? '\n':'') +t+'\n'+m1});
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。