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

如何使用正则表达式过滤角色名及标记,提取转录文本的纯内容

两类文本提取需求的正则实现方案

两类需求都可以通过正则表达式实现,具体操作如下:

第一类:剧场转录文本台词提取

你当前编写的正则无法完全适配需求,存在三个明显问题:

  • 字符匹配范围有限,仅覆盖了英文字母和äüö,未考虑角色名可能存在的其他合法字符
  • 完全未适配可选的括号包裹的动作标注部分
  • 未处理冒号后的空白字符,提取结果容易残留多余空格

实现方案

推荐使用前缀替换法,匹配行首所有角色+动作+冒号的前缀部分,直接替换为空即可得到纯台词。
适用正则:^\*\*[^*]+\*\*(?:\s*\([^)]+\))?:\s*
规则说明:

  • ^ 匹配行首位置
  • \*\*[^*]+\*\* 匹配包裹在两个星号内的角色名
  • (?:\s*\([^)]+\))? 非捕获组,匹配可选的动作标注部分(支持动作前后的任意空格,括号内内容任意),? 表示该组可出现0次或1次
  • :\s* 匹配冒号及冒号后的任意空白字符

操作方式:开启正则多行模式,将所有匹配到的前缀替换为空字符串,即可批量得到纯台词结果。也可以调整正则为捕获分组模式 ^\*{2}[^*]+\*{2}(?:\s*\([^)]+\))?:\s*(.*)$,直接提取第一个捕获分组的内容作为台词。

第二类:带前后置标记的文本内容提取

核心逻辑是分别过滤行首的所有标记前缀、行尾的所有标记后缀,保留中间有效内容,推荐用两步替换法适配性更强。

实现方案

  1. 第一步过滤行首标记,正则:^[\*\(][\s\S]*?\s,替换为空
    规则:匹配行首以*或(开头的所有标记内容,直到第一个有效内容前的空格为止
  2. 第二步过滤行尾标记,正则:\s[\*\(][\s\S]*?$,替换为空
    规则:匹配行尾前的空格开始,以*或(开头的所有标记内容,直到行尾为止

如果你的有效内容确定不会包含*或()包裹的独立标记,也可以用单步捕获的方式,正则:^\W*?(.*?)\s*(?:\*[^*]+\*|\([^)]+\))*\s*$,直接提取第一个捕获分组的内容即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:36:05