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

Python中uptime命令输出匹配天数与分钟数的正则表达式求助

适配多种uptime输出格式的正则表达式

先看uptime的三种典型输出格式:

15:22:04 up 45 days,  2:34,  2 users,  load average: 0.94, 1.17, 1.37
15:30:12 up 21 min,  2 users,  load average: 1.56, 1.18, 1.18
15:30:39 up 15:30,  1 user,  load average: 0.27, 0.40, 0.48

你之前的正则只能匹配第一种带天数的格式,要覆盖所有三种情况,可使用以下正则方案:

最终正则表达式

如果需要捕获包含up的完整目标内容,用这个版本:

import re
uptime_parser = re.compile(r'(up\s+(?:(?:\d+\s+\w+,\s+)?\d+(?::\d+)?|\d+\s+\w+))')

如果只需要捕获up后面的时长部分,用这个版本:

import re
uptime_parser = re.compile(r'up\s+((?:\d+\s+\w+,\s+)?\d+(?::\d+)?|\d+\s+\w+)')

正则结构解析

  • up\s+:匹配固定的up开头,后面跟一个或多个空白字符
  • 核心捕获逻辑通过分支覆盖三种场景:
    • (?:\d+\s+\w+,\s+)?:非捕获组,匹配45 days, 这类带单位的前缀,?表示该部分可选
    • \d+(?::\d+)?:匹配纯数字(如21)或时分格式(如15:30、2:34),(?::\d+)?表示冒号加分钟的部分可选
    • |\d+\s+\w+:单独匹配21 min这类仅带分钟单位的格式,作为分支补充

测试结果

使用包含up的正则版本,对三个示例文本匹配后,捕获结果如下:

  1. up 45 days, 2:34
  2. up 21 min
  3. up 15:30

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 06:15:45