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

如何在Notepad++中用正则表达式提取HH:MM格式课程时长

问题:在Notepad++中提取(HH:MM)格式的时长内容

我使用最新版Notepad++,有一份在线课程的课时列表文本,想要提取其中(HH:MM)格式的时长来汇总总时长。

示例输入文本:

Lecture 1.
    Programming robots (15:32)
    Understanding ROS (8:20)

期望输出:

(15:32)
(8:20)

我尝试过以下正则表达式,但无法匹配到内容:

^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$

/^(0?[1-9]|1[0-2]):[0-5][0-9]$/

也考虑过是否可以通过删除所有字母字符来实现,请问该怎么操作?


解决方案

方法一:正则匹配提取(推荐)

你之前的正则失效是因为加了^和$——这两个符号要求整行完全匹配时间格式,但你的时长只是每行的一部分,自然匹配不到。

用下面的正则就能精准定位带括号的时间:

\((\d{1,2}:\d{2})\)

如果要更严谨地限制小时(0-23)和分钟(0-59)的范围,可以用:

\(([01]?\d|2[0-3]):([0-5]\d)\)

具体操作步骤:

  1. 打开Notepad++加载目标文本
  2. 按Ctrl+H打开替换窗口
  3. 勾选「正则表达式」模式(不要勾选「.匹配换行符」)
  4. 在「查找目标」框输入:.*(\(\d{1,2}:\d{2}\)).*
  5. 在「替换为」框输入:\1
  6. 点击「全部替换」,此时每行的时间会被单独保留,其他内容被删除
  7. 最后用Ctrl+H查找^$(空行),替换为空即可清理多余空行

方法二:删除非目标内容提取

如果想用删除无关字符的方式实现:

  1. 打开替换窗口(Ctrl+H),切换到正则表达式模式
  2. 「查找目标」输入:[^()\d:]——这个表达式会匹配所有不是括号、数字、冒号的字符
  3. 「替换为」留空,点击「全部替换」
  4. 此时文本会变成类似1.(15:32)(8:20)的形式,再用方法一的正则替换,或者手动拆分每行一个时间即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 22:16:17