我有以下模式:
1MHG161 xxxxxxxxxxxxx 1MHG161 xxx
其中,xxxx是字符和空格的可变长度。

我正在尝试捕获每个对象,并具有以下预期输出:
[ '1MHG161 xxxxxxxxxxxxx ' , '1MHG161 xxx' ]

我已经尝试了很多组合,这是最后一个

messages_strings = re.findall("(1MHG161.+?)(?=1MHG161)",content)


查找除最后一个以外的所有内容。



编辑1:

我采取了@anubhava的答案,进一步解决了同样的问题,但使用了动态分隔符,方法是使用\d[A-Z]{3}\d{3}而不是1MHG161

这可以帮助使用EDI解析器的人员。

最佳答案

您可以使用:

>>> re.findall(r"(1MHG161.+?)(?=1MHG161|$)", content)
['1MHG161  xxxxxxxxxxxxx  ', '1MHG161 xxx']


匹配后,超前(?=1MHG161|$)将匹配1MHG161或行锚$的结尾。

08-03 18:16