我有以下模式:
1MHG161 xxxxxxxxxxxxx 1MHG161 xxx
其中xxxx
是可变长度的字符&空格。
我试图抓住每一个并具有以下预期输出:
[ '1MHG161 xxxxxxxxxxxxx ' , '1MHG161 xxx' ]
我尝试了很多组合这是最后一个
messages_strings = re.findall("(1MHG161.+?)(?=1MHG161)",content)
这可以找到除最后一个之外的所有内容。
我已经采取了@anubhava的答案,进一步解决同样的问题,但使用动态分隔符,而不是使用\d[A-Z]{3}\d{3}
代替1MHG161
这可以帮助使用EDI解析器的人。
答案 0 :(得分:3)
您可以使用:
>>> re.findall(r"(1MHG161.+?)(?=1MHG161|$)", content)
['1MHG161 xxxxxxxxxxxxx ', '1MHG161 xxx']
匹配后, Lookahead (?=1MHG161|$)
将匹配1MHG161
或行结束$
。