You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何替换SRT字幕文件中成对出现的双引号为指定弯引号?

问题原因分析

你写的sed命令存在3个核心问题:

  • 正则分组逻辑错误:你保留了捕获到的原"符号(\1、\3),等于在原有引号基础上额外新增了目标符号,自然输出不符合预期
  • sed默认逐行处理,无法匹配跨行的成对引号
  • 贪婪匹配规则:.+会默认匹配到行末尾最后一个",如果一行内存在多对引号会出现匹配错误

正确实现方案

推荐使用兼容性更好的Perl命令实现需求,完美支持跨行匹配、非贪婪匹配,命令如下:

perl -0777 -pe 's/"(.*?)"/„$1”/gs' 输入文件.srt > 输出文件.srt

参数解释

  • -0777:将整个文件一次性读入内存处理,而非默认逐行读取,支持跨行成对引号匹配
  • .*?:非贪婪匹配,只会匹配到距离最近的下一个",避免多对引号场景的匹配混乱
  • g:全局替换所有符合规则的成对引号
  • s:让通配符.可以匹配换行符,适配跨行引号场景

效果验证

对示例SRT文件执行上述命令后,输出结果符合要求:

104
00:10:25,332 --> 00:10:27,876
Kobieta mówi do drugiej:
„Widzisz to, co ja?”

105
00:10:28,001 --> 00:10:30,904
A tamta: „No to co?
Każdy wygląda tak samo.”

如果是GNU sed环境,也可以用如下命令实现:

sed -z 's/"\([^"]*\)"/„\1”/g' 输入文件.srt > 输出文件.srt

注意macOS自带的BSD sed不支持-z参数,需要先安装GNU sed(brew install gnu-sed)后用gsed执行。


内容的提问来源于stack exchange,提问作者menteith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 03:30:02