Python - 在匹配所有匹配项之前打印子字符串

时间:2017-11-06 20:08:32

标签: python findall

我希望找到string中的所有匹配项并打印所有子字符串,直到我将这些strings与新行匹配为止。

e.g。

"123ABC97edfABCaaabbdd1234ABC0009ui50ABC_1234"

print

ABC97edf
ABCaaabbdd1234
ABC0009ui50
ABC_1234

其中"ABC"是重复发生的pattern匹配。

使用findall是否有效的方法?

  • Python新手,使用python版本2.4.3

仅编辑F.Y.I: 我要做的是基本上我有一个250 + Gb文件,其中控制字符显示行的开始和结束但这些Ctrl字符(因为问题...主要是网络)嵌入在这些行中,即在开始/结束之间指示控制字符。

这样,开始/结束控制字符与这些消息之间的字符之间没有特定的区别。

所以我基本上删除了这些控制字符,并且我希望每行有一个完整的消息与某些特定的正则表达式有关。

这里的正则表达式不一定是ABC,也不是所有这些消息。 我已经尝试使用findall并且能够找到所有匹配项,只是我不知道如何获取这些字符串,直到找到下一个匹配项。 (这里的正则表达式可以是-ABC = 35nga | DEF = 64325:dfaf:1234 |或** ABC = 35632 | DEF = 61和许多不同的形式。

我必须打破每一行以及那些在一条线内嵌入多条线的线。

1 个答案:

答案 0 :(得分:0)

使用re.findall

请参阅regex101上的regex

s = "123ABC97edfABCaaabbdd1234ABC0009ui50ABC_1234"
re.findall("ABC.*?(?=ABC|$)",s)

给出list

['ABC97edf', 'ABCaaabbdd1234', 'ABC0009ui50', 'ABC_1234']

如果你想print elements list,你可以这样做:

for sub in re.findall("ABC.*?(?=ABC|$)",s):
    print(sub)

output

ABC97edf
ABCaaabbdd1234
ABC0009ui50
ABC_1234