使用一些定界符将字符串映射到正则表达式
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+(.+)
下面是我的输入,我想要如图所示的输出。有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+(.+)