尝试忽略第一次和第三次匹配并替换所有日期信息。这是一条不起作用的小径。
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 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
3条答案
按热度按时间lnvxswe21#
0qx6xfy62#
假设你知道你想忽略的行的开始部分,你可以使用这个正则表达式进行匹配:
并替换为:
RegEx Demo
RegEx详情:
^
:开始((?:Captured|1St) .*)
:匹配线以Captured
或1st
开头,后跟一个空格和所有内容,直到结束|
:或\b\d\d-\d\d-2023\s*
:匹配日期部分5vf7fwbs3#
我假设目标是删除格式为
dd-mm-yyyy
的日期字符串,当该字符串为:17:35:16
),后跟零个或多个空格,然后是行结束符(\n
,对于Windows,\r\n
)这并不是说我没有对要删除的日期字符串之前的文本做任何假设,以便在将来更改该文本时不需要更改正则表达式。
在上述假设下,匹配以下正则表达式的文本可以用捕获组1的内容替换。
Demo
正则表达式可以分解如下。
在上面的例子中,我在一个字符类(
[ ]
)中包含了大部分空格,只是为了让它们可见。