首页 > 解决方案 > Python Regex 循环非捕获组

问题描述

我有以下字符串:

12/27/2016 08:05 AM (GMT+01:00) added by Operator A (PID-000301):\r\nOthers/Malfunction;Device failure not specified;It Crasched during upgrade\r\n\r\n*************************************************************************************************\r\n12/26/2016 08:06 AM (GMT+01:00) added by Operator B (PID-000301):\r\nOthers/Malfunction;Device failure not specified;It Crasched during upgrade\r\n\r\n*************************************************************************************************\r\n12/23/2016 08:06 AM (GMT+01:00) added by Operator C (PID-000301):\r\nOthers/Malfunction;Device failure not specified;It Crasched during upgrade\r\n\r\n*************************************************************************************************\r\n12/22/2016 08:05 AM (GMT+01:00) added by Operator A (PID-000301):\r\nOthers/Malfunction;Device failure not specified;It Crasched during upgrade\r\n\r\n*************************************************************************************************\r\n12/22/2016 12:57 AM (GMT+01:00) added by Operator B (PID-000301):\r\nOthers/Malfunction;Device failure not specified;It Crasched during upgrade\r\n\r\n*************************************************************************************************\r\n12/21/2016 02:03 AM (GMT+01:00) added by Operator C (PID-000301):\r\nOthers/Malfunction;Device failure not specified;It Crasched during upgrade\r\n\r\n'

如您所见,if 具有重复的短语:

12/27/2016 08:05 AM (GMT+01:00) added by Operator A/B/C (PID-000301): ...

我想通过编写一个正则表达式来清除这个重复出现的短语并将其删除。到目前为止,我已经写过类似的东西:

r'(?:\n?\d\d\/\d\d\/\d\d\d\d.+\(PID-\d{6}\):)+([\w\W]+)'

但是,这只会删除第一次出现的重复短语。我如何“循环”它,以便它拾取所有实例?

标签: pythonregex

解决方案


正则表达式101

import re

s = '12/27/2016 08:05 AM (GMT+01:00) added by Operator A (PID-000301):\r\nOthers/Malfunction;Device failure not specified;It Crasched during upgrade\r\n\r\n*************************************************************************************************\r\n12/26/2016 08:06 AM (GMT+01:00) added by Operator B (PID-000301):\r\nOthers/Malfunction;Device failure not specified;It Crasched during upgrade\r\n\r\n*************************************************************************************************\r\n12/23/2016 08:06 AM (GMT+01:00) added by Operator C (PID-000301):\r\nOthers/Malfunction;Device failure not specified;It Crasched during upgrade\r\n\r\n*************************************************************************************************\r\n12/22/2016 08:05 AM (GMT+01:00) added by Operator A (PID-000301):\r\nOthers/Malfunction;Device failure not specified;It Crasched during upgrade\r\n\r\n*************************************************************************************************\r\n12/22/2016 12:57 AM (GMT+01:00) added by Operator B (PID-000301):\r\nOthers/Malfunction;Device failure not specified;It Crasched during upgrade\r\n\r\n*************************************************************************************************\r\n12/21/2016 02:03 AM (GMT+01:00) added by Operator C (PID-000301):\r\nOthers/Malfunction;Device failure not specified;It Crasched during upgrade\r\n\r\n'

s = re.sub(r'\s*\d{2}/\d{2}/\d{4}.+\(PID-\d{6}\):', '', s)

print(s)

印刷:

Others/Malfunction;Device failure not specified;It Crasched during upgrade

*************************************************************************************************
Others/Malfunction;Device failure not specified;It Crasched during upgrade

*************************************************************************************************
Others/Malfunction;Device failure not specified;It Crasched during upgrade

*************************************************************************************************
Others/Malfunction;Device failure not specified;It Crasched during upgrade

*************************************************************************************************
Others/Malfunction;Device failure not specified;It Crasched during upgrade

*************************************************************************************************
Others/Malfunction;Device failure not specified;It Crasched during upgrade

推荐阅读