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

Python正则表达式:忽略指定匹配项替换日期信息失败求助

问题解决:保留指定位置日期,删除其余日期

需求说明

需要忽略输入文本中第1个和第3个匹配到的日期,删除其余所有日期内容(仅保留时间部分),原正则代码无法实现预期效果。

输入文本

Input = '''
Captured on: 08-29-2023 09:43:26
Start Time: 08-28-2023 11:11:57
1St Cycle Time: 08-28-2023 11:12:06 

Channel-00 Cycles Completed: 4404 
Channel-00 Triggered Time: 08-29-2023 00:45:08 
Channel-01 Cycles Completed: 24 
Channel-01 Triggered Time: 08-28-2023 11:15:57'''

原代码问题

原代码stra = re.sub("^(?!Captured.*$).*?(\d+-\d+-2023 )", "", Input)存在两个核心问题:

  • 仅排除了Captured开头的行,未考虑需要保留第3个日期所在的1St Cycle Time行
  • 正则逻辑仅针对行首非Captured的内容处理,无法精准区分匹配项的位置,导致保留/删除规则失效

解决方案

使用re.sub的回调函数,通过计数判断当前匹配的是第几个日期,仅保留第1和第3个,其余删除日期部分:

import re

Input = '''
Captured on: 08-29-2023 09:43:26
Start Time: 08-28-2023 11:11:57
1St Cycle Time: 08-28-2023 11:12:06 

Channel-00 Cycles Completed: 4404 
Channel-00 Triggered Time: 08-29-2023 00:45:08 
Channel-01 Cycles Completed: 24 
Channel-01 Triggered Time: 08-28-2023 11:15:57'''

count = 0
def replace_date(match):
    global count
    count += 1
    # 保留第1和第3个日期,其余仅保留前缀和时间
    if count in (1, 3):
        return match.group(0)
    else:
        return match.group(1) + match.group(3)

# 正则拆分内容:(前缀文本)(日期部分)(时间部分)
pattern = re.compile(r'(.*?)(\d+-\d+-2023 )(\d{2}:\d{2}:\d{2})')
result = pattern.sub(replace_date, Input)
print(result)

代码说明

  1. 正则表达式r'(.*?)(\d+-\d+-2023 )(\d{2}:\d{2}:\d{2})'将每行含日期的内容拆分为三部分:
    • 第1组:日期前的前缀文本(如Start Time: )
    • 第2组:需要判断是否删除的日期部分(如08-28-2023 )
    • 第3组:需要保留的时间部分(如11:11:57)
  2. 回调函数replace_date通过全局计数器count定位匹配项:
    • 若为第1或第3个匹配项,直接返回完整内容(保留日期)
    • 其余情况返回前缀+时间(删除日期)

运行结果

Captured on: 08-29-2023 09:43:26
Start Time: 11:11:57
1St Cycle Time: 08-28-2023 11:12:06 

Channel-00 Cycles Completed: 4404 
Channel-00 Triggered Time: 00:45:08 
Channel-01 Cycles Completed: 24 
Channel-01 Triggered Time: 11:15:57

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 07:05:23