求适配字幕清理、删除无逗号/句号分隔重复内容的正则表达式方案
长字幕文件重复内容清理与格式修复正则方案
以下正则可直接在VS Code、Sublime、Notepad++等支持正则匹配的文本编辑器中运行,覆盖三类无固定分隔符的字幕异常场景,操作前备份原文件。
跨换行相邻行重复修复
针对前一行收尾与后一行起始完全重复的场景,核心匹配逻辑:捕获行尾重复片段,匹配紧随换行的相同冗余片段,仅保留单份内容拼接为通顺语句。
- 基础匹配规则:
([^\r\n]+?)(\r?\n)\s*(\1) - 基础替换规则:
$1 - 优化调整参数:
- 开启忽略大小写匹配(正则修饰符
i),可覆盖跨换行重复片段大小写不一致的情况,适配“how are / we going”这类拆分重复的场景 - 增加捕获片段最小长度限制,避免误删短单词的正常表达:将表达式调整为
([^\r\n]{3,}?)(\r?\n)\s*(\1),仅匹配长度≥3个字符的重复片段
- 开启忽略大小写匹配(正则修饰符
- 覆盖的典型场景:
- 行尾“I'll take care of my son's” + 下一行开头“I'll take care of my son's education” → 拼接为“John, I'll take care of my son's education.”
- 行尾“supposed” + 下一行开头“supposed to be in Paris?” → 拼接为“And weren't you supposed to be in Paris?”
- 行尾“a microwave oven” + 下一行开头“a microwave oven, a pressure cooker” → 拼接为“Sure, that looks like a microwave oven, a pressure cooker.”
同行内无分隔符重复短语修复
针对同一行内连续出现两次完全一致的短语、分句的场景,核心匹配逻辑:捕获重复片段,删除紧随其后的完全匹配冗余内容。
- 匹配规则:
([^\r\n]+?)\s+\1 - 替换规则:
$1 - 优化调整参数:
- 开启忽略大小写匹配,覆盖前后重复片段首字母大小写不一致的转写误差
- 增加最小长度阈值减少误判:将表达式调整为
([^\r\n]{4,}?)\s+\1,仅匹配长度≥4个字符的重复片段,避免误删正常的短词重复内容
- 覆盖的典型场景:
- 行内内容“why are you going to deny it? to deny it? We all know” → 清理为“why are you going to deny it? We all know.”
- 行内内容“is a very weak team. a very weak team.” → 清理为“is a very weak team.”
单行双对话破折号异常修复
针对原本应分行的对话被压缩到同一行、行内连续出现两个对话破折号的场景,核心匹配逻辑:在第二个破折号位置插入换行,保持每行单破折号的对话格式。
- 匹配规则:
^(-[^\r\n]+?)\s+(-) - 替换规则:
$1\n$2 - 覆盖的典型场景:
- 单行内容“-No? -What about the kid?” → 拆分为两行独立对话:
-No?-What about the kid?
- 单行内容“-No? -What about the kid?” → 拆分为两行独立对话:
- 匹配规则保留行首锚点
^,不会误识别句子内容中间出现的非对话功能破折号
推荐操作流程
- 先运行同行内重复修复正则,清理单行列内的冗余重复内容
- 多次运行跨换行重复修复正则,直到编辑器无匹配结果为止
- 最后运行破折号格式修复正则,拆分挤在同一行的多段对话
内容的提问来源于stack exchange,提问作者Alina R
相关产品推荐
相关产品推荐

