如何使用 re.sub 函数用于以下内容?

How to use re.sub function for the following?

我想将下面的行替换为,

ABC+::A1
CDE+:A1A1A1

预期输出:

ABC+::A1
TIM+++2020:11:21:12:51+ZZZ
ABC++ADDEDTIME
CDE+:A1A1A1

我想在上面两行之间添加以下行。请注意,从上面的行来看,A1/A1A1A1 是一个会不断变化的变量,但前三个字母字符保持不变。因此无论冒号(+::)后面提到什么,都必须加上下面两行,

要添加的行

TIM+++2020:11:21:12:51+ZZZ
ABC++ADDEDTIME

我们可以像下面这样很好地利用 re:

import re
regex = r"^(ABC\+::[A-Z0-9]+\n)(?=^CDE\+:[A-Z0-9]+)"
test_str = ("ABC+::A1\n"
    "CDE+:A1A1A1")
subst = "\1TIM+++2020:11:21:12:51+ZZZ\nABC++ADDEDTIME\n"

result = re.sub(regex, subst, test_str, 0, re.MULTILINE)
if result:
    print(result)

Regex Demo

基本上,正则表达式模式匹配 ABC+::ALPHANUM{1, or more} 后跟 CDE+:ALPHANUM{1, or more} 并替换括号中的第一个匹配项,并在后面添加换行符和新字符串它。