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

如何用Python正则匹配括号前时间码并生成含注释的键值对字典

解决方案

核心正则表达式

针对你给出的场景,最优匹配正则如下:

(\d+:\d+)\s*\(([^)]*)\)

各部分逻辑说明:

  • (\d+:\d+):第一捕获组,匹配格式为「数字:数字」的时间码,可适配M:SS/MM:SS等常见时间码格式,若需要支持小时级时间码可修改为(\d{1,2}:\d{1,2}(?::\d{1,2})?)
  • \s*\(:匹配时间码与左括号之间的0个或多个空白字符,以及左括号本身
  • ([^)]*):第二捕获组,匹配所有非右括号的字符,相比非贪婪匹配性能更优,能准确拿到括号内的全部注释内容
  • \):匹配右括号结束标识

完整实现示例(Python)

import re
import html

# 示例输入文本
raw_text = '''<p>Example (this is a line that is a string of text:</p>
<pre><code>Title of item: 1:33 + 4:55 + 4:32 (this is a note about 4:32) + 5:27 (another &quot;note&quot;, I want to keep 3:22-4:50 from 5:27)
</code></pre>'''

# 执行匹配
matches = re.findall(r'(\d+:\d+)\s*\(([^)]*)\)', raw_text)

# 转换为指定结构的字典列表,同时反转义HTML实体
result = [
    {"clip": timecode, "notes": html.unescape(note)}
    for timecode, note in matches
]

print(result)

输出结果

[
    {'clip': '4:32', 'notes': 'this is a note about 4:32'},
    {'clip': '5:27', 'notes': 'another "note", I want to keep 3:22-4:50 from 5:27'}
]

注意事项

  • 以上正则默认你的场景中不存在嵌套括号,如果有嵌套括号需求,需要调整为支持递归匹配的正则写法
  • 示例中加入了HTML实体反转义处理,对应你输入文本里的&quot;这类编码内容,不需要可以删除对应逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 23:15:05