Python打印所有匹配的子字符串,直到匹配为止

2024-09-29 00:16:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望在string中找到所有匹配项,并打印所有子字符串,直到将这些strings匹配到新行。你知道吗

例如

"123ABC97edfABCaaabbdd1234ABC0009ui50ABC_1234"

应该print

ABC97edf
ABCaaabbdd1234
ABC0009ui50
ABC_1234

其中"ABC"是重复出现的pattern匹配。你知道吗

有没有一种有效的方法可以使用findall来实现这一点?你知道吗

  • 这里是Python新手,使用Python版本2.4.3

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

因此,在开始/结束控制字符和这些消息之间的字符之间没有具体的区别。你知道吗

所以我基本上删除了这些控制字符,并且我希望每行有一条关于特定regex的完整消息。你知道吗

对于所有这些消息,这里的正则表达式不一定是ABC或order。 我试过使用findall,并且能够找到所有匹配项,只是在找到下一个匹配项之前,我不知道如何获得这些字符串。(这里的正则表达式可以是-ABC=35nga | DEF=64325:财政部:1234|或者**ABC=35632 | DEF=61和许多不同的形式。你知道吗

我必须打断每一行,以及在一行中嵌入多行的行。你知道吗


Tags: 方法字符串消息stringdef字符patternabc
1条回答
网友
1楼 · 发布于 2024-09-29 00:16:29

使用re.findall:

参见^{}上的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

相关问题 更多 >