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

如何用Regex删除指定Speaker 1:重复行并保留特定条目?

解决方案:用正则删除指定位置的重复Speaker条目

问题还原

原始文本:

Speaker 1:
Lorem ipsum
Speaker 1:
This is text
Speaker 1:
Another one
Speaker 2:
Yadda Yadda
Speaker 1:
Text
Speaker 2:
New text

需求:删除Speaker 2:之前的第2、3个Speaker 1:条目(含对应内容),保留第一个和后续的Speaker 1:。

可行正则方案

匹配规则

使用捕获分组保留需要留存的内容,匹配并替换掉冗余部分:

(Speaker 1:\r?\n.*?)(?:\r?\nSpeaker 1:\r?\n.*?)*(\r?\nSpeaker 2:)

替换规则

将匹配到的内容替换为:

$1$2

规则解释

  • (Speaker 1:\r?\n.*?):捕获第一个Speaker 1:的标题和对应内容,.*?是非贪婪匹配,确保只匹配到该条目结束的位置,不会覆盖后续内容
  • (?:\r?\nSpeaker 1:\r?\n.*?)*:非捕获分组,匹配所有位于第一个Speaker 1:和Speaker 2:之间的重复Speaker 1:条目(包括换行符、标题、内容),*表示匹配任意次数(这里刚好匹配第2、3个)
  • (\r?\nSpeaker 2:):捕获Speaker 2:的开头部分,确保后续内容完整保留

替换后结果

Speaker 1:
Lorem ipsum
Speaker 2:
Yadda Yadda
Speaker 1:
Text
Speaker 2:
New text

注意事项

  • 上述写法兼容大多数正则工具(如VS Code、Notepad++),无需额外开启特殊模式
  • \r?\n用于适配Windows(\r\n)和Unix(\n)的不同换行格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:57:35