我希望找到string
中的所有匹配项并打印所有子字符串,直到我将这些strings
与新行匹配为止。
e.g。
"123ABC97edfABCaaabbdd1234ABC0009ui50ABC_1234"
print
:
ABC97edf
ABCaaabbdd1234
ABC0009ui50
ABC_1234
其中"ABC"
是重复发生的pattern
匹配。
使用findall是否有效的方法?
仅编辑F.Y.I: 我要做的是基本上我有一个250 + Gb文件,其中控制字符显示行的开始和结束但这些Ctrl字符(因为问题...主要是网络)嵌入在这些行中,即在开始/结束之间指示控制字符。
这样,开始/结束控制字符与这些消息之间的字符之间没有特定的区别。
所以我基本上删除了这些控制字符,并且我希望每行有一个完整的消息与某些特定的正则表达式有关。
这里的正则表达式不一定是ABC,也不是所有这些消息。 我已经尝试使用findall并且能够找到所有匹配项,只是我不知道如何获取这些字符串,直到找到下一个匹配项。 (这里的正则表达式可以是-ABC = 35nga | DEF = 64325:dfaf:1234 |或** ABC = 35632 | DEF = 61和许多不同的形式。
我必须打破每一行以及那些在一条线内嵌入多条线的线。
答案 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