我有以下模式: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
或行锚$
的结尾。