regex - 提取由模式分隔的时间码和后面的行中的文本
问题描述
我想从设置的字幕文件中提取开始时间和结束时间以及字幕文本。有什么更好的方法来做到这一点?字幕文件如下:
1
00:00:14,680 --> 00:00:23,960
on
2
00:00:24,480 --> 00:00:30,000
VERT
3
00:00:30,080 --> 00:00:38,120
UD
4
00:00:38,120 --> 00:00:39,040
REST
我想要以下内容:
00:00:14.680 , 00:00:23.960, on
00:00:24.480 , 00:00:30.000, VERT
00:00:30.080 , 00:00:38.120, UD
00:00:38.120 , 00:00:39.040, REST
在谷歌搜索之后,我可以使用以下内容提取在线正则表达式,如图所示。如何将提取的文本放入文件中(并,
用.
?
(\d.{11})\s-->\s(\d.{11})[\r\n](\w+)
更新: 得到了我想要的以下内容。有什么办法可以用 . 替换 ,\ 吗?
gawk 'match($0, /([0-9].{11})\s-->\s([0-9].{11})/, a) {getline; print a[1], "\t", a[2],"\t", $0}'
解决方案
这适用于 grep 和 perl:
$ cat text.txt | egrep -v '^[0-9]*$'| perl -pe 's/(:\d{2}),(\d)/$1.$2/g; s/ *--> */, /; s/(\d)\n/$1, /g;'
00:00:14.680, 00:00:23.960, on
00:00:24.480, 00:00:30.000, VERT
00:00:30.080, 00:00:38.120, UD
00:00:38.120, 00:00:39.040, REST
egrep
删除空行和仅数字行- 多次
perl
搜索和替换将逗号固定为点,将-->
箭头固定为逗号,并用逗号连接拖线
推荐阅读
- c# - 如何创建国家/地区下拉栏
- python - 打印功能和数据框视图/复制
- c++ - 更改 unique_ptr 指向的指针是未定义的行为吗?
- db2 - 执行选择查询时出现 DB2 性能问题
- php - 从 PHP 到 SQL Server 的连接失败并显示“用户 xxx 登录失败”
- mysql - 连接多个表时遇到问题。预期结果与实际结果非常接近
- kubernetes - kubectl can-i 命令的语法是什么?
- javascript - 如何使用 Jest/Enzyme 在功能性 React 组件中测试 lambda 函数?
- swift - 如何使用 Typealias 或 Closure 在 swift 中定义一个带有 name 参数的常量?
- php - 在自定义帖子类型中使用 ACF 复选框字段来过滤不同自定义帖子类型的结果