使用某种delimeter用正则表达式映射字符串



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

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

[IN]:

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$$$2021-10-28T11:46:51Z$$$2021-09-30T09:36:04Z$$$EXAMPLE@EXAMPLE.COM;

开始。。。示例python代码:

import re
regex = r"(AGCSPSR|AGCSRNA)s+(AGCS.+?d+)s+(.+?)s+(d{4}-dd-ddTdd:dd:dd(.d+)?.+)s+(d{4}-dd-ddTdd:dd:dd(.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$$$2021-10-28T11:46:51Z$$$$$$2021-09-30T09:36:04Z$$$$$$EXAMPLE@EXAMPLE.COM

提示最后一个分号从正则表达式中排除。如果想包括这一点,请使用下面的正则表达式:AGCSPSR|AGCSRNA)s+(AGCS.+?d+)s+(.+?)s+(d{4}-dd-ddTdd:dd:dd(.d+)?.+)s+(d{4}-dd-ddTdd:dd:dd(.d+)?.+)s+(.+)

相关内容

最新更新