使用一些定界符将字符串映射到正则表达式

Map string with regular expressions using some delimeter

下面是我的输入,我想要如图所示的输出。有6个参数,用$$$隔开。

基本上我们有一个 csv 文件,每一行都有 6 个不同的值,如项目密钥、Jmp 问题、摘要、更新时间、创建时间、评论。第一个值将是 AGCSPSR 或 AGCSRNA 第二个值将再次从 AGCS 开始并以某个数字 (AGCSRNA-333) 结束。第三个值将始终是一些注释第四个值将是时间和日期(2021-10-28T11:46:51Z)第五个将再次是时间和日期最后一个将是一些字符串。

[输入]:

AGCSRNA AGCSRNA-333 WriteOff trx GL_MVMNT_TYP must be 101 2021-10-28T11:46:51Z 2021-09-30T09:36:04Z EXAMPLE@EXAMPLE.COM;

[输出]:

AGCSRNA$$$AGCSRNA-333$$$WriteOff trx GL_MVMNT_TYP must be 101$$21-10-28T11:46:51Z$$21-09-30T09:36:04Z$$$EXAMPLE@EXAMPLE.COM;

我们开始...示例 python 代码:

import re
regex = r"(AGCSPSR|AGCSRNA)\s+(AGCS.+?\d+)\s+(.+?)\s+(\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d(\.\d+)?.+)\s+(\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d(\.\d+)?.+)\s+(.+);"
test_str = "AGCSRNA AGCSRNA-333 WriteOff trx GL_MVMNT_TYP must be 101 2021-10-28T11:46:51Z 2021-09-30T09:36:04Z EXAMPLE@EXAMPLE.COM;"
matches = re.findall(regex, test_str, re.MULTILINE | re.IGNORECASE)
for match in matches:
    print('$$$'.join(match))

输出: AGCSRNA$$$AGCSRNA-333$$$WriteOff trx GL_MVMNT_TYP must be 101$$21-10-28T11:46:51Z$$$$$21-09-30T09:36:04Z$$$$$$EXAMPLE@EXAMPLE.COM

提示最后一个分号已从正则表达式中排除。如果要包含它,请使用以下正则表达式: AGCSPSR|AGCSRNA)\s+(AGCS.+?\d+)\s+(.+?)\s+(\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d(\.\d+)?.+)\s+(\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d(\.\d+)?.+)\s+(.+)